只要你把 Vim 的可执行文件 (vim.exe)、帮助文件的目录 (doc) 以及语法文件的目录
(syntax) 放到同一个目录下,Vim 就可以工作了,不需要额外的配置,也不需要修改注
册表或添加环境变量,只要保证 Vim 目录包含在路径中,或者在桌面上做一个快捷方式
也可以。
通常 Vim 资源文件 ("_vimrc" 和 "_gvimrc") 放在 Vim 运行目录的上一级目录。如果
你想把它放在别的地方,可以设置环境变量指向资源文件所在的目录,例如:
set VIM=C:\user\piet
Vim 会在 "c:\user\piet\" 下寻找资源文件。
备注
: 多用户计算机需要这种功能,否则还是把 _vimrc 放在原来的地方简单些。
如果你改变了 vim.exe 的位置,就需要设置一下 $VIM 变量,这样相应的运行目录
(runtime directory) 就是 "$VIM/vim{version}
"。例如:
set VIM=E:\vim
Vim 会在 "e:\vim\vim82" 寻找 8.2 版本运行时需要的文件。
备注
: 强烈建议不要这样做。最好把可执行文件和运行时需要的文件放到同一个目录里。
如果你把可执行文件和资源文件都移动了,那么你必须用 $VIM 和 $VIMRUNTIME 两个环
境变量来分别指定资源文件 ("_vimrc" 和 "_gvimrc") 和运行目录的位置。例如:
set VIM=C:\usr\piet
set VIMRUNTIME=E:\vim\vim82
这样,Vim 可以在 "c:\user\piet\" 目录下找到资源文件,在 "e:\vim\vim82" 目录下
找到运行时所需的文件。
要想了解更多内容,见 $VIM 和 $VIMRUNTIME 。
通过系统属性对话框,可以分别为每个用户设置环境变量。步骤如下:
1. 键入 Windows 键 + R 来打开 "运行" 对话框。
2. 输入 "sysdm.cpl" 并按 "确定" 按钮。此时会显示 "系统属性" 对话框。
3. 选择 "高级" 标签页,按 "环境变量..." 按钮。此时会打开 "环境变量" 对话框。
4. 在 "用户变量" 列表中选择一个已有的变量并按 "编辑..." 按钮来编辑。或按
"新建..." 按钮来加入新变量。
5. 编辑完变量后,按 "确定" 按钮来保存改动。
在文件名 (这里是指带路径的文件名 译者
) 里使用反斜杠 (\) 可能会出问题。在某些命
令里,VI 要用两个反斜杠表示反斜杠。Vim 在这一问题上宽容一些,它不会从文件名中
删除反斜杠,所以直接用 ":e c:\foo\bar" 就可以工作。但是当反斜杠出现在一些特殊
字符 (空格、逗号、反斜杠,等等) 前面时,Vim 就会删除反斜杠。用斜杠来避免问题:
":e c:/foo/bar",同样可以。Vim 会自动把斜杠替换成反斜杠以避免一些 MS-DOS 或
Win32 程序产生问题。
如果你喜欢用斜杠,就设置 'shellslash' 选项。Vim 就会在自动补全文件名的时候,用
斜杠代替反斜杠。这在你使用 UNIX 风格的 'shell' 时,特别有用。
CTRL-PageUp
和 CTRL-PageDown
的原有映射已经被取消了,现在它们的功能是跳转到下
一个或者前一个标签页 <C-PageUp> <C-PageDown>
如果你想要让它们移动到屏幕行的首行和末行,这样映射:
键 键码 正常/可视模式 插入模式
CTRL-PageUp
<M-N>
<M-C-D>
H <C-O>
H
CTRL-PageDown
<M-N>
v L$ <C-O>
L<C-O>
$
此外,下面这些键用于复制/剪切/粘贴。Win32 版本和 DJGPP 版本使用剪贴板。
Shift-Insert 粘贴文本 (从剪贴板) <S-Insert>
CTRL-Insert
复制选择的文本 (到剪贴板) <C-Insert>
CTRL-Del
剪切选择的文本 (到剪贴板) <C-Del>
Shift-Del 剪切选择的文本 (到剪贴板) <S-Del>
CTRL-X
剪切可视文本 (到剪贴板)
这些键是这样映射的 (Win32 和 DJGPP 版本):
键 键码 正常 可视 插入
Shift-Insert <M-N>
<M-T>
"*P "-d"*P <C-R>
<C-O>
*
CTRL-Insert
<M-N>
<M-U>
"*y
Shift-Del <M-N>
<M-W>
"*d
CTRL-Del
<M-N>
<M-X>
"*d
或这样映射 (非 Win32 版本):
键 键码 正常 可视 插入
Shift-Insert <M-N>
<M-T>
P "-dP <C-R>
<C-O>
"
CTRL-Insert
<M-N>
<M-U>
y
Shift-Del <M-N>
<M-W>
d
CTRL-Del
<M-N>
<M-X>
d
CTRL-X
<C-X>
"*d
如果系统支持剪贴板,Vim 就会使用 "* 寄存器。
默认的写屏操作是直接调用 bios 完成的,这在大多数系统上可以工作。你不需要用
ansi.sys。你可以使用 ":mode" 命令设置当前屏幕模式。见 :mode 。
要想改变 Vim 的颜色,可以使用 :highlight 命令。Normal 高亮组 (highlight
group) 决定了 Vim 用什么颜色显示普通的文本。例如,要设置灰色字体和蓝色背景:
:hi Normal ctermbg=Blue ctermfg=grey
要了解其它可用的高亮组,参见 highlight-groups 。
DOS 控制台不支持 "粗体"、"下划线" 之类的属性。你可以用九个终端选项来设置五种属
性值的颜色。备注
: 因为你可以用 ":highlight" 命令直接设置颜色,这些选项并没有必
要。它们是为了兼容老版本的 Vim 而保留的。 'highlight' 选项指定每种行为使用五
种模式中的哪一种。九个终端选项如下:
:set t_mr=^V^[\|xxm 反转模式开始
:set t_md=^V^[\|xxm 粗体模式开始
:set t_me=^V^[\|xxm 返回正常文本
:set t_so=^V^[\|xxm 突出模式开始
:set t_se=^V^[\|xxm 返回正常文本
:set t_us=^V^[\|xxm 下划线模式开始
:set t_ue=^V^[\|xxm 返回正常文本
:set t_ZH=^V^[\|xxm 斜体模式开始
:set t_ZR=^V^[\|xxm 返回正常文本
^V 代表 CTRL-V
^[ 代表 <Esc>
(在输入上面的命令时,按下 CTRL-V
Vim 只会显示 ^,这时不要输入 V,直接输入
<Esc>
即可。译者
)
你必须把上面命令里的 xx 换成相应的十进制数,这个数是前景色与背景色相加的和:
颜色 前景色 背景色
黑色 0 0
暗蓝色 1 16
暗绿色 2 32
灰绿色 3 48
暗红色 4 64
暗紫红色 5 80
棕色,暗黄色 6 96
亮灰色 7 112
暗灰色 8 128 *
蓝色,天蓝色 9 144 *
绿色,浅绿色 10 160 *
青绿色,兰绿色 11 176 *
红色,亮红色 12 192 *
紫红色,亮紫红色 13 208 *
黄色,浅黄色 14 224 *
白色 15 240 *
* 在某些显示模式下,大于 128 的颜色代码可能不起作用,并且代码 128 会使字体闪
烁。
代码 0 表示颜色恢复到起始状态 (起始状态的值通常是 7,亮灰色文字,黑色背景,但
你可以修改。如果你在命令行提示上修改了缺省的颜色,你可能需要在 vimrc 文件里调
整一些高亮的颜色--见下面)。
这就是 't_me' 的初始值。
下面是 Vim 默认高亮模式:
t_mr 112 反转模式: 黑色文字 (0),亮灰色背景 (112)
t_md 15 粗体模式: 白色文字 (15),黑色背景 (0)
t_me 0 正常模式: 正常模式 (返回默认状态)
t_so 31 突出模式: 白色文字 (15),暗蓝色背景 (16)
t_se 0 突出模式结束 (返回默认状态)
t_czh 225 斜体模式: 暗蓝色文字 (1),黄色背景 (224)
t_czr 0 斜体模式结束 (返回默认状态)
t_us 67 下划线模式: 灰绿色文字 (3),暗红色背景 (64)
t_ue 0 下划线模式结束 (返回默认状态)
之所以选择这些颜色,是因为它们在使用反转显示的时候看起来比较舒服,但是你可以改
成你喜欢的颜色。
例如:
:set t_mr=^V^[\|97m " 启动反转模式: 暗蓝色文字 (1) 棕色背景 (96)
:set t_md=^V^[\|67m " 启动粗体模式: 灰绿色文字 (3) 暗红色背景 (64)
:set t_me=^V^[\|112m " 返回正常模式: 黑色文字 (0) 亮灰色背景 (112)
:set t_so=^V^[\|37m " 启动突出模式: 暗紫红色文字 (5) 暗绿色背景 (32)
:set t_se=^V^[\|112m " 返回正常模式: 黑色文字 (0) 亮灰色背景 (112)
如果 'fileformat' 设置为 "dos" (这是默认设置),Vim 把 <NL>
或 <CR>
<NL>
当作行
尾符 (<EOL>
)。写入文件的时候,Vim 使用 <CR>
<NL>
。这样,如果你编辑一个文件并且
保存了,那么 Vim 会把所有的 <NL>
替换成 <CR>
<NL>
。
如果 'fileformat' 设置为 "unix",Vim 则使用一个 <NL>
作为 <EOL>
,并且把 <CR>
显示为 ^M。
你可以用 Vim 把 <NL>
替换成 <CR>
<NL>
: 在任何模式下读,保存成 Dos 格式
(":set ff=dos")。
你可以用 Vim 把 <CR>
<NL>
替换成 <NL>
: 在 Dos 模式下读,保存成 Unix 格式
(":set ff=unix")。
如果 'fileformats' 非空 (这是默认值),Vim 会自动设置 'fileformat' 的值,因此你
没有必要担心自己究竟在做什么。
'fileformat' 'fileformats'
如果你要编辑一个脚本文件或者一个二进制文件,那么你应该在装载这个文件之前预先设
定 'binary' 选项。脚本和二进制文件可能包含 <NL>
,Vim 要把它替换成 <CR>
<NL>
。你
可以在启动时加上 "-b" 参数,这样可以自动置位 'binary' 选项。
":cd" 命令能识别驱动器符号,并且可以改变当前的驱动器。命令 ":cd c:" 使驱动器 C
成为当前驱动器。命令 ":cd d:\foo",切换当前目录到 "D 盘的 foo 目录下"。Vim 也
能识别 UNC 路径。例如: ":cd \\server\share\dir"。 :cd
用 CTRL-Break
来代替 CTRL-C
中止查找操作。Vim 只有在接受输入时才能检测到
CTRL-C
。
对于 16 位和 32 位的 DOS 版本:
Vim 把临时文件 (用于过滤) 存放于下列目录中 (按顺序查找下列目录,一旦发现该目录
存在并且可以创建文件,就用它存放临时文件):
$TMP
$TEMP
C:\TMP
C:\TEMP
当前目录
对于 Win32 版本 (控制台和 GUI):
Vim 用标准的 Windows API 函数来获取临时文件名 (用于过滤)。按顺序查找下列目录,
一旦发现该目录存在并且可以创建文件,就用它存放临时文件:
$TMP
$TEMP
当前目录
Vim 支持 PowerShell Desktop 和 PowerShell Core。PowerShell Desktop 是随
Windows 安装的 PowerShell 版本,而 PowerShell Core 是跨平台的可单独下载的版
本。要判断使用的是何版本,可在 PowerShell 提示行上输入 -
$PSVersionTable.PSEdition
如果 'shell' 文件名包含了 "powershell",VIM 在启动时设置 'shellcmdflag'、
'shellxquote'、'shellpipe' 和 'shellredir' 选项为以下值:
'shellcmdflag' -Command
'shellxquote' "
'shellpipe' 2>&1 | Out-File -Encoding default
'shellredir' 2>&1 | Out-File -Encoding default
如果 'shell' 文件名包含了 "pwsh",VIM 在启动时设置 'shellcmdflag'、
'shellxquote'、'shellpipe' 和 'shellredir' 选项为以下值:
'shellcmdflag' -c
'shellxquote' "
'shellpipe' >%s 2>&1
'shellredir' >%s 2>&1
如果你觉得 PowerShell 命令花了太长时间,试试在 'shellcmdflag' 开始处加上
"-NoProfile"。注意
这会跳过 profile 里的 PowerShell 环境设置。
如果通过 'shell' 执行 PowerShell 脚本有问题,试试在 'shellcmdflag' 开始处加上
"-ExecutionPolicy RemoteSigned -Command"。PowerShell 的执行政策设置详见在线
Windows 文档。
option-backslash 说明 'shellcmdflag' 里有多个标志位时如何包含空格。
'shellpipe' 和 'shellredir' 选项值重新编码 PowerShell Desktop 的 UTF-16LE 输出
为当前配置的控制台代码页。把 "default" 改为下面值之一,则可以强制输出为不同编
码:
unicode - UTF-16LE (PowerShell 5.1 的缺省输出)
bigendianunicode - UTF-16
utf8 - UTF-8
utf7 - UTF-7 (无 BOM)
utf32 - UTF-32
ascii - 7-位 ASCII 字符集
default - 系统活跃代码页 (通常为 ANSI)
oem - 系统当前 OEM 代码页
备注
上述的多字符 Unicode 编码除非特别注明,包含前导的 BOM。
缺省 PowerShell Core 的输出使用不带 BOM 的 UTF-8 编码。如果要强制 PowerShell
Core 输出为其它编码,设置 'shellredir' 和 'shellpipe' 为
"2>&1 | Out-File -Encoding encoding",其中 encoding 是以下之一:
ascii - 7-位 ASCII 字符集
bigendianunicode - UTF-16BE
bigendianutf32 - UTF-32BE
oem - 系统当前 OEM 代码页
unicode - UTF-16LE
utf7 - UTF-7
utf8 - UTF-8
utf8BOM - UTF-8 带 BOM
utf8NoBOM - UTF-8 不带 BOM (PowerShell Core 的缺省输出)
utf32 - UTF-32
从 PowerShell Core 6.2 开始,Encoding 参数也支持指定已注册代码页的数值 ID
(-Encoding 1251) 或字符串名 (-Encoding "windows-1251")。详见 .NET 文档的
Encoding.CodePage 部分。
vim:tw=78:ts=8:noet:ft=help:norl: