[r212]: trunk / doc / os_os2.txt  Maximize  Restore  History

Download this file

182 lines (127 with data), 8.2 kB

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
*os_os2.txt* For Vim version 7.4. 最近更新: 20067
VIM 参考手册 by Paul Slootman
译者: Willis
http://vimcdoc.sf.net
*os2* *OS2* *OS/2*
本文讨论 OS/2 版本的 Vim 的特点。
目前,还没有直接基于 PM Vim GUI 版本,也即: OS/2 版本只有控制台界面的。不
过,现在有了一个 Win32s-兼容的 GUI 版本,这是由 Warp 4 (支持 Win32s) 的拥有者
们在 Win-OS/2 会话中实现的。本文所记录的,则完全是针对直接的控制台版本而言的。
注意
这个 OS/2 的移植版本对我和其他的一些 OS/2 用户来说都没有问题。不过,因为我还没
有得到足够多的反馈,所以既有可能确实没有 (OS/2 专门的) 漏洞存在 (除了以下提到
的那些以外),也有可能只是没有人有机会创造一个存在漏洞的环境而已。在 Dos
Unix 模式下的文件读写、二进制、还有 FAT 处理看起来都工作正常,而这些是最有可能
出问题的地方。
一个已知的问题是 Vim 打开的文件被从 Vim 的外壳转换技术执行的其他程序所继承。
尤其,这会使得 Vim 无法删除与外部程序同时打开的缓冲区的交换文件,直到外部程序
结束为止。那时,交换文件是可以删除了,但是如果 Vim 一开始没法做的话,那就不可
能再去做了。因而,你会在重新启动 Vim 编辑同一个文件时得到警告说别的 Vim 会话正
在编辑同一个文件。比如,执行 "!start epm"。退出 Vim,重新启动 Vim,打开上次
epm 启动的时候缓冲区里的那个文件,就会看到了这个问题。我正在克服这一问题!
第二个问题,是在通过网络访问 OS/2 系统时,Vim 不了解这一情形。比如,在一个
Unix系统下用 telnet 访问,打开 Vim。看起来,这个问题是因为 OS/2 _有时_ 会识别
功能/光标键,并试图把它们转换成 "正常" PC 键盘产生的 OS/2 的相应代码。我在
测试一个解决方法 (把 OS/2 代码还原成正确的功能键),但目前我还不能仓促地给出明
确的结论 (顺便提一下,我在 Warp 3 上工作)。同时,十分欢迎你们的任何帮助。
要执行 Vim,你需要 emx 运行环境 (至少 rev. 0.9b)。这可以如下得到 (可以询问
Archie):
emxrt.zip emx 运行包
我已经附带了一个 emx.dll,它应该复制到你的 LIBPATH 里面的一个目录里。Emx
GPL的,但 emx.dll 库不是 (要了解这对你意味着什么,读一下 COPYING.EMX)。
这个 emx.dll 来自 emxfix04.zip 包。很不幸,这个包有一个问题,哦,我是说有一个
POSIX 的关于 select() 函数的特色。3.27 以前的 Vim 版本在启动的时候 (准确的说,
是在执行 vimrc 的时候) 会挂起。如果这发生了,多按几次 <Enter> 直到 Vim 开始工
作为止。下一步,用一个新一点的 Vim 吧!
VIMRC
如果你解压包含 Vim 的压缩包,然后直接在解压完的地方运行 Vim,Vim 应该就能找到
你的运行时文件和 .vimrc,无需任何设置。
如果你把可执行文件和运行时文件分开放,那么你需要设置 VIM 环境变量来定位帮助文
件和你的 .vimrc 的位置。在 CONFIG.SYS 里放入这一行: >
SET VIM=c:/local/lib/vim
把你的 .vimrc 和其他的 Vim 文件放在这个目录里。把运行时文件也放进来。每个版本
Vim 都有自己的运行时目录,就像这样 "c:/local/lib/vim/vim54"。现在,你的 Vim
的文件结构应当象这样:
c:/local/lib/vim/.vimrc
c:/local/lib/vim/vim54/filetype.vim
c:/local/lib/vim/vim54/doc/help.txt
etc.
注意: .vimrc 可能在把 OS/2 安装在 FAT 文件系统的那些环境里叫做 _vimrc。Vim
会先查找 .vimrc,如过找不到,再在同一个地方找 _vimrc。.vimrc 或者 _vimrc 的存
在与否影响 'compatible' 选项的设置,这会有很多意想不到的后果。参见
|'compatible'|。
如果你在网络驱动器上运行 OS/2,那么你可以把 Vim 安装在 网络驱动器上 (包括
.vimrc;这被称为 "系统" vimrc 文件),然后还可以用个人的 .vimrc ("用户" vimrc
文件)。它应该在 HOME 环境变量所指定的目录下。
在文件名里使用 ~ 相当于使用 HOME 环境变量,所以 ":e ~/textfile" 会编辑 HOME
录下面的 "textfile" 文件。另外,你也可以用别的环境变量,比如,":n $SRC/*.c"
HOME 环境变量还用于定位 .viminfo 文件 (参见 |viminfo-file|)。还没有 FAT 文件系
统下的 .viminfo支持,对不起了。不过,你自己可以加上 -i 启动标志位来设定 (比
如,"vim -i $HOME/_viminfo")。
如果 HOME 环境变量没有设置,缺省值是 "C:/"
是用斜杠 ('/') 还是反斜杠 ('\') 可能是个问题 (更多说明在 |dos-backslash| 里),
但大部分情况下 Vim 做的是那 "正确的事"。Vim 自己在文件名里用反斜杠,但会很高兴
地接受键入的正斜杠。(事实上,有时这样更方便!)
临时文件 (对过滤命令有用) 被放在如下列表里第一个存在并且能创建文件的目录中:
$TMP
$TEMP
C:\TMP
C:\TEMP
当前目录
*os2ansi*
要在 TERM 环境变量里用 "os2ansi" (或者干脆不要设,因为缺省值就是正确的)。如果
你因为别的应用的需要把 TERM 设为别的值,你可以在 .vimrc 里把终端类型设为
os2ansi。问题是 OS/2 ANSI 模拟限制很多 (比如,它没有插入/删除行)。
如果你确实想用别的 TERM 赋值 (比如因为别的程序),确保它的 termcap 入口有正确的
键盘映射。emx 发布的 termcap.dat 并不一定总会有。以下是你希望的 termcap 入口里
需要使光标和命名的功能键 (比如 pagedown)工作的一些需要的设置: >
:ku=\316H:kd=\316P:kl=\316K:kr=\316M:%i=\316t:#4=\316s:\
:kD=\316S:kI=\316R:kN=\316Q:kP=\316I:kh=\316G:@7=\316O:\
:k1=\316;:k2=\316<:k3=\316=:k4=\316>:k5=\316?:k6=\316@:\
:k7=\316A:k8=\316B:k9=\316C:k;=\316D:
Paul Slootman
43
Stevan Tryon 给出一个关于如果在大窗口里运行 Vim 的建议:
当我在一个象 PMMail 那样的 OS/2 WPS 应用里调用 Vim 的时候,它调入缺省的 25-行
模式。要得到一个更有用的窗口大小,我做好了一个外部编辑命令 "vimbig.cmd",它接
着调用 "vimbig2.cmd"。有些强来和不太自然了,也许,不过它能用。
vimbig.cmd: >
@echo off
start "Vi Improved" /f vimbig2.cmd %1 %2 %3 %4
vimbig2.cmd: >
@echo off
mode 80,43
vim.exe %1 %2 %3 %4
exit
<
(Alexander Wagner 提供)
OS/2 Vim 没有对系统剪贴板的直接支持。要允许这样的访问,你需要一个附加的工
具: 通过一个 vio 应用来访问剪贴板。Stefan Gruendel 的免费软件包 clipbrd.zip
就可以。你可以从这个地方下载到编译好的可执行码和所有的源代码:
http://www.os2site.com/sw/util/clipboard/index.html
http://download.uni-hd.de/ftp/pub/os2/pmtools/
它的安装很简单: 只要把包里的两个可执行程序放到你的 PATH 里面的一个目录,Vim
可以从的你的任何工作目录里访问他们了。
要从剪贴板里复制文本到你的 Vim 会话里,可用 :r 命令。只要从 Vim 里如下调用
clipbrd.exe: >
:r !clipbrd -r
要从 Vim 中把文本复制到剪贴板,只要用通常的 vim-方式 标记文本,然后调用: >
:!clipbrd -w
它会把你的选择区复制到 OS/2 的剪贴板里。
为了方便应用,你也许想加为这些命令加上映射?比如,用 F11 把剪贴板的内容粘贴到
Vim 里,用 F12 把选择的文本复制到剪贴板去。那你可以: >
if has("os2")
imap <F11> <ESC>:r !clipbrd -r<CR>i
vmap <F12> :!clipbrd -w<cr>
else
imap <F11> <ESC>"*p<CR>i
vmap <F12> "*y
endif
这样就可以保证只有在 OS/2 下会调用 clipbrd 命令,而其他环境下用内建的机制 (要
Vim 每次都能记住这些,把这几行放到你的 .vimrc 里)。
vim:tw=78:ts=8:ft=help:norl: