*os_beos.txt*	For Vim version 8.0.  最近更新: 2017年8月


		  VIM 参考手册    by Bram Moolenaar
				译者: Willis
				http://vimcdoc.sf.net


							*BeOS* *BeBox*
这是一个适用于 BeOS 预览版本 2 (也被称为 PR2) 或以后版本的 Vim 5.1 移植版本。

本文包含了 Vim 的 BeBox/BeOS 版本的特殊之处。除了本文提到的之外，和一般的 Unix
|os_unix.txt| 版本的 Vim 行为大致相当。

 1. 通用			|beos-general|
 2. 编译 Vim			|beos-compiling|
 3. 终端的超时问题		|beos-timeout|
 4. Unicode 还是 Latin1		|beos-unicode|
 5. BeOS GUI			|beos-gui|
 6. $VIM 目录			|beos-vimdir|
 7. 拖和放			|beos-dragndrop|
 8. 单次启动还是多次启动	|beos-launch|
 9. 字体			|beos-fonts|
10. meta 键修饰符		|beos-meta|
11. 鼠标键映射			|beos-mouse|
12. 色彩名称			|beos-colors|
13. 带 Perl 的编译		|beos-perl|


1. 通用							*beos-general*

一般，语法高亮用不同的前景色高亮不同的项目。这特别适用于深色背景和浅色前景的终
端窗口。有些中等灰色的背景 (比如 (r,g,b)=(168,168,168)) 也不错。如果你用缺省的
浅色背景和深色字符，那么倒转前景和背景的设置概念也许看起来会舒服许多。要这么
做，把以下的内容加到你的 .vimrc 文件里 (其中的 <Esc> 需要被换成实际的 escape
字符)。 >

  :if &term == "beos-ansi"
  :    set t_AB=<Esc>[3%dm
  :    set t_AF=<Esc>[4%dm
  :endif


2. 编译 Vim						*beos-compiling*

从 Advanced Access Preview Release (AAPR) 预览版本开始，Vim 可以用标准的
configure 脚本进行配置。要设置正确的编译器及其标志位，在外壳上应用下面的命令
行 (你可以剪贴到命令行上):

CC=$BE_C_COMPILER CFLAGS="$BE_DEFAULT_C_FLAGS -O7" \
    ./configure --prefix=/boot/home/config

$BE_C_COMPILER 通常是 "mwcc"，$BE_DEFAULT_C_FLAGS 通常是 "-I- -I."

如果已经运行过 configure，你又想加上 GUI 支持，那你必须编辑 config.mk 文件，使
得含有 GUI_xxx 的行指向 $(BEOSGUI_xxx) 而不是 $(NONE_xxx)。
或者，你也可以在 Makefile 里作此改动；这样的效果更持久一点。找找看 "NONE_"。

编译以后你需要把资源加进你的可执行程序。把以下几行加到 link.sh 脚本接近尾部的
地方 (在 "exit $exit_value" 一行之前)，就可以自动执行这一任务。

    rmattr BEOS:TYPE vim
    copyres os_beos.rsrc vim
    mimeset vim

同时，建立一个不干任何事的文件 "strip":

    #!/bin/sh
    mimeset $1
    exit 0

用 "make install" 安装 Vim 的时候你需要它，

现在，输入 "make" 来编译 Vim，然后 "make install" 来安装它。

如果你想手动安装 Vim，你需要把 Vim 复制到 $HOME/config/bin 里，然后建立若干指
向它的符号链接 ({g,r,rg}{vim,ex,view})。进一步，你需要把 Vim 的配置文件
vim-5.0s/{*.vim,doc,syntax} 复制到 $HOME/config/share/vim。为了完整起见，你还
需要把 nroff 的手册页面复制到 $HOME/config/man/man1。不要忘了 ctags/ctags 和
xxd/xxd！

明显地，你需要用实际没有限制的连接器实际连接 Vim。参见
http://www.metrowerks.com 了解如果购买 BeOS 的 CodeWarrior 编译器。目前还没有
其他可用的连接器。

即使你有合适的文件，以上步骤并不能包含 Perl 或者 Python 接口。|beos-perl|


3. 终端的超时问题					*beos-timeout*

因为有的 POSIX/UNIX 功能还未实现[1]，终端里的带超时的读操作还没有直接的操作系
统支持。这意味着除非你设置了 :set notimeout，你不能用 :mapping 等映射多于一个
字符。|'timeout'|

要避免这个问题，我提供了一个临时解决办法。用一个额外的线程预读一个字符，从而
提供必需的带超时的输入。不过，有一个附带的后果就是 Vim 会识别到终端窗口的大小
调整。

终端里不支持功能键，因为它们产生无法识别的字符序列。

这些问题在 GUI 里并不存在。

[1]: 没有文件描述符上的 select() 例程；另外 终端输入/输出接口 VMIN 和 VTIME 的
设置也不正确。这一问题从 DR7 开始就存在，至少在 PR2 里还没有解决。

							*beos-unicode*
4. Unicode 还是 Latin1					*beos-utf8*

BeOS 用 Unicode 和 UTF-8 来编码文本字符串 (16-位字符编码成 8-位字符)。Vim 假定
你用 ISO-Latin1 或者其他 8-位 字符代码。这对非 ASCII 的字符会产生意外的结果。
试试命令 :digraphs 你就知道了。如果看起来一团乱，用 :set isprint=@ 可以少许改
进对 ISO-Latin1 128-255 字符的显示。如果你有合适的字体 (见后)，GUI 的情况会好
些。

你可以用 /boot/bin/xtou 命令把 ISO-Latin1 文件 转换成 UTF-8 文件 (xtou -f iso1
filename) 或者相反 (xtou -t iso1 filename)。


5. BeOS GUI						*beos-gui*

不再包含 BeOS GUI 的代码。有相当长的时间没有人维护，很有可能已经不能用。如果你
需要，从 Vim 6.x 版本中合并进相应的代码。


6。$VIM 目录						*beos-vimdir*

$VIM 代表 Vim 支持文件所在的位置。它的缺省值在编译时被确定，可以如下得到 >

  :version

一般，它的值是 /boot/home/config/share/vim。如果你不喜欢，你可以设定 Vim 环境
变量来改变缺省的设定，或者在你的 .vimrc 里设定 'helpfile': >

  :if version >= 500
  :    set helpfile=~/vim/vim54/doc/help.txt
  :    syntax on
  :endif


7. 拖和放						*beos-dragndrop*

你可以把文件和目录拖放在 Vim 图标上 (从而启动一个新的 Vim 会话，除非你用文件类
型应用把 Vim 设为 "单次启动") 或者放在 Vim 窗口上 (从而开始编辑文件)。拖放一个
目录则改变 Vim 的当前工作目录为此目录。|:cd| |:pwd| 如果你在拖放的时候按住
SHIFT，Vim 把当前目录改变为放置的第一个项目所在的目录。如果启动新的 Vim，那就
不需要按 shift 了: Vim 会做同样的事情。

放置文件时设置当前的参数列表。|argument-list|


8. 单次启动还是多次启动					*beos-launch*

发布时，Vim 的应用程序标志位 (在文件类型设定里) 设为多次启动。如果你愿意，你可
以把它们改为单次启动。这样，试图启动第二个 Vim 程序时会用第一个 Vim 打开相应的
文件。这在 Tracker 和命令行下都适用。后者不支持非文件 (选项) 的参数。

NB: 只有 GUI 版本 有 BApplication (从而有应用程序标志位)。这一节不适用于没有
GUI 的版本，如果你自己编译一个的话。


9. 字体							*beos-fonts*

以下方法可以设定字体 >

  :set guifont=Courier10_BT/Roman/10

其中，第一部分是字体家族，第二部分是风格，第三部分是字体大小。在字体家族和风格
里，你可以用下划线代替空格。

等宽字体 (例如 Courier) 提供最好的效果。Vim 试图对所有的字体应用
B_FIXED_SPACING 模式，不过看起来这对比例字体没有效果 (即使 BeBook 说应该有)。

Vim 也试图用 B_ISO8859_1 编码，也被称为 ISO Latin 1 编码。这并不对所有字体适
用。比如，它适用于 Courier，但不适用于 ProFontISOLatin1/Regular (很奇怪)。你可
以通过以下命令验证这点， >

  :digraphs

它列出一些字符和它们的 ISO Latin 1 编码。如果，其中有 "方框" 字符，或者最后一
个字符不是加点的 y，那么这个编码不适用于这个字体。

如果你指定的字体不存在，会用系统的等宽字体代替。

标准等宽的系统字体是:

	      ProFontISOLatin1/Regular
		  Courier10_BT/Roman
		  Courier10_BT/Italic
		  Courier10_BT/Bold
		  Courier10_BT/Bold_Italic

标准比例的系统字体是:

		    Swis721_BT/Roman
		    Swis721_BT/Italic
		    Swis721_BT/Bold
		    Swis721_BT/Bold_Italic
		Dutch801_Rm_BT/Roman
		Dutch801_Rm_BT/Italic
		Dutch801_Rm_BT/Bold
		Dutch801_Rm_BT/Bold_Italic
		   Baskerville/Roman
		   Baskerville/Italic
		   Baskerville/Bold
		   Baskerville/Bold_Italic
		 SymbolProp_BT/Regular

为了好玩，试试其中的一些字体吧。


10. meta 键修饰符					*beos-meta*

你可以用左右的 OPTION 键来模拟 META 键修饰符。这是因为 ALT (也就是 COMMAND) 键
不会传给应用程序。


11. 鼠标键映射						*beos-mouse*

Vim 把鼠标按钮分别称为 LeftMouse、MiddleMouse 和 RightMouse。如果你用缺省的鼠
标设置，这些名字反映的就是事实。Vim 用以下的映射:

    Button 1 -> LeftMouse，
    Button 2 -> RightMouse，
    Button 3 -> MiddleMouse。

如果你的鼠标没有三个按钮，你可以用鼠标键击和若干修饰符来定义自己的鼠标按钮。例
见 swapmouse 包:					 |gui-mouse-mapping|
$VIMRUNTIME/pack/dist/opt/swapmouse/plugin/swapmouse.vim


12. 色彩名称						*beos-colors*

Vim 有一些内建的色彩名称。附加的名字则从 $VIMRUNTIME/rgb.txt 里取得。这个文件
基本上是 X 里的色彩数据库。为了提高效率，这个文件里的名字被缓冲存贮。


13. 带 Perl 的编译					*beos-perl*

带 Perl 支持的编译需要一点技巧。Metrowerks 编译器在找寻包含文件的位置上想法有
些与众不同。因为有些 Perl 的包含文件和有些 Vim 的头文件重名，错误的文件被包含
了。要修正这个问题，运行如下在 vim-5.0/src 目录的 Perl 脚本: >

   preproc.pl > perl.h

    #!/bin/env perl
    # Simple #include expander, just good enough for the Perl header files.

    use strict;
    use IO::File;
    use Config;

    sub doinclude
    {
	my $filename = $_[0];
	my $fh = new IO::File($filename, "r");
	if (defined $fh) {
	    print "/* Start of $filename */\n";

	    while (<$fh>) {
		if (/^#include "(.*)"/) {
		    doinclude($1);
		    print "/* Back in $filename */\n";
		} else {
		    print $_;
		}
	    }
	    print "/* End of $filename */\n";

	    undef $fh;
	} else {
	    print "/* Cannot open $filename */\n";
	    print "#include \"$filename\"\n";
	}
    }

    chdir     $Config{installarchlib}."/CORE";
    doinclude "perl.h";

它会只用其他的 Perl 头文件来扩展 "perl.h" 头文件。

现在，你可以用 --enable-perlinterp 选项 configure 和 make Vim。不过，要提醒的
是，这会给 Vim 增加 616 千字节的大小！没有 Perl 的支持，带着缺省的特性和 GUI
的 Vim 大概是 575K 大小，而带 Perl 支持则有 1191K 之大！

-Olaf Seibert

[注意: 以下地址已经不能用了:]
<rhialto@polder.ubc.kun.nl>
http://polder.ubc.kun.nl/~rhialto/be

 vim:tw=78:ts=8:ft=help:norl:
