VARIOUS

*various.txt*   For Vim version 7.1.  最近更新: 2007年3月


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


各种其他命令						*various*

1. 其他命令			|various-cmds|
2. 线上帮助			|online-help|
3. 用 Vim 代替 less 或 more	|less|


1. 其他命令						*various-cmds*

							*CTRL-L*
CTRL-L			清屏并重画屏幕。重画可能稍后发生,在处理完预读入之后。

							*:redr* *:redraw*
:redr[aw][!]		立即重画屏幕。如果有 !,先清屏。
			这对在执行脚本或函数的中间要刷新屏幕,或者在置位了
			'lazyredraw' 而执行映射的过程中间都有用。

						*:redraws* *:redrawstatus*
:redraws[tatus][!]	重画当前窗口的状态行。如果有 !,重画所有的状态行。它适
			用于 'statusline' 包含有不能自动更新项目的时候。

							*N<Del>*
<Del>			输入数字的时候: 删除上一位数字。 注意: 如果你想要 <BS>
			做同样的事,在 .vimrc 里加入如下的映射:
				:map CTRL-V <BS>   CTRL-V <Del>
			如果你的 <Del> 键工作不正常,可参见 |:fixdel|。

:as[cii]	或					*ga* *:as* *:ascii*
ga			显示光标下字符的 ascii 值,分别以十进制、十六进制和八
			进制显示。例如,如果光标下是 'R':
				<R>  82,  Hex 52,  Octal 122 
			如果该字符不是标准的 ASCII 字符,但据 'isprint' 选项可
			以显示,则另给出不可显示的版本。另外,如果该字符大于
			127,还显示 <M-X> 形式的结果。例如:
				<~A>  <M-^A>  129,  Hex 81,  Octal 201 
				<p>  <|~>  <M-~>  254,  Hex fe,  Octal 376 
			(其中的 <p> 是某个特殊字符)
			文件里的 <Nul> 字符内部以 <NL> 存储,但显示为:
				<^@>  0,  Hex 00,  Octal 000 
			如果字符有合成用字符,同时显示它们。'maxcombine' 的值
			这时不起作用。
			助记: 得到 (Get) Ascii 值。{Vi 无此功能}

							*g8*
g8			显示光标下字符 (假定其为 |UTF-8| 编码) 的各字节的十六
			进制值。它会同时显示合成用字符。'maxcombine' 的值这时
			不起作用。
			一个带三个合成用字符的字符示例:
				e0 b8 81 + e0 b8 b9 + e0 b9 89 
			{Vi 无此功能} {仅当编译时加入 |+multi_byte| 特性才有
			效}

							*8g8*
8g8			寻找光标所在或之后的非法 UTF-8 字节序列。两种情形下这
			可以工作:
			1. 如果 'encoding' 是任何 8 位编码
			2. 如果 'encoding' 是 "utf-8" 而 'fileencoding' 是任何
			   8 位编码
			所以它可以用来编辑本来应该是 UTF-8 但因为包含了非法字
			节而读入时被当作 8 位编码的文件。
			文件尾不回绕。
			注意 如果光标在非法字节上或者光标在多字节字符的中间,
			此命令不移动光标。
			{Vi 无此功能} {仅当编译时加入 |+multi_byte| 特性才有
			效}

						*:p* *:pr* *:print* *E749*
:[range]p[rint][flags]
			显示 [range] 范围里的行 (缺省是当前行)。
			注意: 如果你要打印你的文本到纸张上,见 |:hardcopy|。
			GUI 上可以使用 File.Print 菜单项。
			|ex-flags| 说明 [flags]。

:[range]p[rint] {count} [flags]
			显示 {count} 行,从 [range] 指定的范围开始 (缺省是当前
			行 |cmdline-ranges|)。
			|ex-flags| 说明 [flags]。

							*:P* *:Print*
:[range]P[rint] [count] [flags]
			和 ":print" 相同。Vi 里加入这个功能,很明显地,是给那
			些按 Shift 键太久的人用的 ...
			|ex-flags| 说明 [flags]。

							*:l* *:list*
:[range]l[ist] [count] [flags]
			和 :print 相同,但是不可显示字符用 '^' 代替,行尾加上
			$。
			|ex-flags| 说明 [flags]。

							*:nu* *:number*
:[range]nu[mber] [count] [flags]
			和 :print 相同,但每行之前显示行号 (也参见 'highlight'
			和 'numberwidth' 选项)。
			|ex-flags| 说明 [flags]。

							*:#*
:[range]# [count] [flags]
			和 :number 相同。

							*:#!*
:#!{anything}		忽略,从而你可以用下面的方式开始 Vim 脚本:
				#!/usr/bin/env vim -S
				echo "this is a Vim script"
				quit

							*:z* *E144*
:{range}z[+-^.=]{count}	显示包围 {range} 指定行的若干行文本,如果没有 {range},
			这显示当前行上下的文本。如果有 {count},它指定你能看到
			的行数。否则,如果只有一个窗口,使用 'window' 选项。不
			然,使用当前的窗口大小。

			:z 可以单独使用,也可以后跟数个标点符号中的一个。他们
			有如下的效果:

			标记   首行          末行           新位置      
			----   ----------    ---------      ------------
			+      当前行  	     向前 1 屏      向前 1 屏
			-      向后 1 屏     当前行         当前行
			^      向后 2 屏     向后 1 屏      向后 1 屏
			.      向后 1/2 屏   向前 1/2 屏    向前 1/2 屏
			=      向后 1/2 屏   向前 1/2 屏    当前行

			不指定任何标记相当于指定 "+"。如果标记是 "=",当前行会
			被连字符组成的两行包围。

:{range}z#[+-^.=]{count}				*:z#*
			和 ":z" 类似,但显示行号。
			{Vi 并非所有版本都有此功能和所有这些参数}

							*:=*
:= [flags]		显示末行的行号。
			|ex-flags| 说明 [flags]。

:{range}= [flags]	显示 {range} 范围内最后一行的行号。例如,打印当前行
			号:
				:.=
			|ex-flags| 说明 [flags]。

:norm[al][!] {commands}					*:norm* *:normal*
			执行若干普通模式命令 {commands}。这使得在命令行上执行
			普通模式命令成为可能。{commands} 的执行就像从键盘输入
			那样。撤销命令会撤销所有的命令。
			如果发生错误,结束执行。
			如果给出 [!],不使用映射。
			{commands} 必须是完整的命令。如果 {commands} 没有完整
			给出一个命令,未完成的最后那个命令会被终止,如同键入了
			<Esc><C-C> 一样。":normal" 还在工作的时候,显示不
			会被刷新。这意味着插入命令也必须完整 (要开始插入模式,
			见 |:startinsert|)。":" 命令也必须完整。而且你不能用
			"Q" 或 "gQ" 启动 Ex 模式。
			{commands} 不能以空格开始,如果要,前面加个 1 (一)。一
			个空格就是空格。
			{commands} 里忽略 'insertmode' 选项。
			该命令后面不能跟其他命令。因为任何 '|' 都被认为是命令
			的一部分。
			该命令可以递归使用,但是深度不能超过 'maxmapdepth'。
			如果一个不可重新映射的映射 |:noremap| 调用该命令,它的
			参数就因而还是有可能被重新映射。
			一个替代的方法是 |:execute|,它可以用表达式作为参数。
			这样就可使用可显示字符 (译者注: 似应为不可显示字符)。
			例如:
				:exe "normal \<c-w>\<c-w>"
			{Vi 当然无此功能}
			{仅当编译时加入 |+ex_extra| 特性才可用}

:{range}norm[al][!] {commands}				*:normal-range*{range} 指定的范围中的每行执行若干普通模式命令
			{commands}。在执行 {commands} 之前,光标先定位在该行的
			的第一列。除此以外,和没有给出范围的 ":normal" 命令并
			无差别。
			{Vi 无此功能}
			{仅当编译时加入 |+ex_extra| 特性才可用}

							*:sh* *:shell* *E371*
:sh[ell]		该命令启动一个外壳。外壳退出后 (执行完 "exit" 命令),
			你会回到 Vim。外壳命令的名字来自 'shell' 选项。
							*E360*
			注意: 当 Vim 在 Amiga 上通过编译器的 QuickFix 模式时启
			动时,该命令不能使用。这是因为编译器把标准输入设为非交
			互模式。

							*:!cmd* *:!* *E34*
:!{cmd}			在外壳里执行 {cmd} 命令。也可参见 'shell' 和
			'shelltype' 选项。
			{cmd} 里的任何 '!' 都被前一个外部命令所取代 (参见
			'cpoptions'),除非之前有反斜杠。这时反斜杠被去掉。例
			如: "!ls" 之后的 "!echo ! \! \\!" 实际执行
			"echo ls ! \!"。
			命令执行之后,检查当前文件的修改时间 |timestamp|。
			{cmd} 里不能有 '|',见 |:bar|。
			{cmd} 以换行符结尾,其后的内容被理解为另外一个 ":" 命
			令。不过,如果换行之前有反斜杠,该反斜杠被去掉,{cmd}
			继续接受参数。无论之前有多少个反斜杠都是如此。只有一个
			会被去掉。
			Unix 上命令通常在非交互的外壳里运行。如果你希望用交互
			外壳 (比如要用别名机制 aliases),设置 'shellcmdflags'
			为 "-ic"。Win32 上可参见 |:!start|。
			Vim 在命令结束以后重画屏幕,因为命令可能显示任何文本。
			因此,你会有一个按回车的提示,以便你看到执行结果。要避
			免这一点:
				:silent !{cmd}
			这样屏幕就不会重画。如果确实有输出,你需要用 CTRL-L 或
			":redraw!" 来刷新。
			参见 |shell-window|。

							*:!!*
:!!			重复上次的 ":!{cmd}"。

							*:ve* *:version*
:ve[rsion]		显示编辑器的版本号。如果编译器能解释 "__DATE__",也显
			示编译的日期。不然,显示固定的发布日期。
			然后,显示 Vim 编译时所带特性的信息。如果某特性之前有
			'+',该特性被包含。如果之前有 '-',该特性没有包含。要
			改变编译时带的特性,修改 feature.h 并重新编译 Vim。
			要在表达式里确定是否包含某特性,参见 |has()|。
			以下是特性的总览。
			第一列显示包含该特性的最小版本。
			   T	tiny (微小)
			   S	small (小)
			   N	normal (普通)
			   B	big (大)
			   H	huge (巨大)
			   m	手动设定或者依赖于其他特性
			 (无)	依赖于系统
			这样,如果一个特性标记为 "N",它包含在 Vim 的 normal、
			big 和 huge 版本里。

							*+feature-list*
   *+ARP*		仅对 Amiga 有效: 支持 ARP
B  *+arabic*		支持阿拉伯语 |Arabic|
N  *+autocmd*		|:autocmd|,自动命令
m  *+balloon_eval*	气泡表达式支持 |balloon-eval|。如果编译时包含支持的
			GUI (Motif、GTK、GUI) 同时还有 Netbeans/Sun Workshop
			集成或者 |+eval| 特性之一就包含此特性。
N  *+browse*		|:browse| 命令
N  *+builtin_terms*	一些内建终端项 |builtin-terms|
B  *++builtin_terms*	最大内建终端项支持 |builtin-terms|
N  *+byte_offset*	支持 'statusline' 选项的 'o' 标志位、"go" 和 ":goto"
			命令。
N  *+cindent*		|'cindent'|, C 缩进
N  *+clientserver*	Unix 和 Win32: 远程调用 |clientserver|
   *+clipboard*		剪贴板支持 |clipboard|
N  *+cmdline_compl*	命令行补全 |cmdline-completion|
N  *+cmdline_hist*	命令行历史 |cmdline-history|
N  *+cmdline_info*	|'showcmd'| 和 |'ruler'|
N  *+comments*		支持 |'comments'|
N  *+cryptv*		加密支持 |encryption|
B  *+cscope*		支持 |cscope|
m  *+cursorshape*	|termcap-cursor-shape| 支持
m  *+debug*		带调试的编译。
N  *+dialog_gui*	支持 |:confirm| 显示 GUI 对话框。
N  *+dialog_con*	支持 |:confirm| 显示控制台对话框。
N  *+dialog_con_gui*	支持 |:confirm| 显示 GUI 或控制台对话框。
N  *+diff*		|vimdiff| 和 'diff'
N  *+digraphs*		|digraphs| *E196*
   *+dnd*		"~ 寄存器的拖放支持 |quote_~|。
B  *+emacs_tags*	|emacs-tags| 文件
N  *+eval*		表达式计算 |eval.txt|
N  *+ex_extra*		Vim 附加的 Ex 命令: |:center|、|:left|、|:normal|、
			|:retab| 和 |:right|
N  *+extra_search*	|'hlsearch'| 和 |'incsearch'| 选项。
B  *+farsi*		|farsi| 波斯语言
N  *+file_in_path*	|gf|、|CTRL-W_f| 和 |<cfile>|
N  *+find_in_path*	包含文件搜索: |[I|、|:isearch|、|CTRL-W_CTRL-I|、
			|:checkpath|,等等。
N  *+folding*		折叠 |folding|
   *+footer*		信息页脚 |gui-footer|
   *+fork*		只对 Unix 有效: |fork| 外壳命令
N  *+gettext*		消息翻译 |multi-lang|
   *+GUI_Athena*	只对 Unix 有效: Athena |GUI|
   *+GUI_neXtaw*	只对 Unix 有效: neXtaw |GUI|
   *+GUI_GTK*		只对 Unix 有效: GTK+ |GUI|
   *+GUI_Motif*		只对 Unix 有效: Motif |GUI|
   *+GUI_Photon*	只对 QNX 有效:  Photon |GUI|
m  *+hangul_input*	韩语 (Hangul) 输入支持 |hangul|
   *+iconv*		编译时有 |iconv()| 函数
   *+iconv/dyn*		类似 |iconv-dynamic| |/dyn|
N  *+insert_expand*	|insert_expand| 插入模式补全
N  *+jumplist*		跳转表 |jumplist|
B  *+keymap*		键盘映射表 |'keymap'|
B  *+langmap*		语言映射表 |'langmap'|
N  *+libcall*		函数库调用 |libcall()|
N  *+linebreak*		|'linebreak'|、|'breakat'| 和 |'showbreak'|
N  *+lispindent*	|'lisp'|
N  *+listcmds*		Vim 的缓冲区列表相关命令 |buffer-hidden| 和参数列表
			|:argdelete|
N  *+localmap*		支持缓冲区的局部映射 |:map-local|
N  *+menu*		菜单 |:menu|
N  *+mksession*		创建会话 |:mksession|
N  *+modify_fname*	文件名修饰符 |filename-modifiers|
N  *+mouse*		鼠标处理 |mouse-using|
N  *+mouseshape*	鼠标形状 |'mouseshape'|
B  *+mouse_dec*		只对 Unix 有效: Dec 终端鼠标处理 |dec-mouse|
N  *+mouse_gpm*		只对 Unix 有效: Linux 终端鼠标处理 |gpm-mouse|
B  *+mouse_netterm*	只对 Unix 有效: netterm 终端鼠标处理 |netterm-mouse|
N  *+mouse_pterm*	只对 QNX 有效: pterm 终端鼠标处理 |qnx-terminal|
N  *+mouse_xterm*	只对 Unix 有效: xterm 终端鼠标处理 |xterm-mouse|
B  *+multi_byte*	韩国语和其他多字节语言 |multibyte|
   *+multi_byte_ime*	Win32 多字节字符的输入法 |multibyte-ime|
N  *+multi_lang*	非英语语言支持 |multi-lang|
m  *+mzscheme*		Mzscheme 接口 |mzscheme|
m  *+mzscheme/dyn*	Mzscheme 接口 |mzscheme-dynamic| |/dyn|
m  *+netbeans_intg*	|netbeans|
m  *+ole*		只对 Win32 GUI 有效: |ole-interface|
   *+osfiletype*	支持 'osfiletype' 选项和自动命令的文件类型检查。
			|autocmd-osfiletypes|
N  *+path_extra*	'path' 和 'tags' 的向上和向下搜索
m  *+perl*		Perl 接口 |perl|
m  *+perl/dyn*		Perl 接口 |perl-dynamic| |/dyn|
   *+postscript*	|:hardcopy| 可以写 PostScript 文件
N  *+printer*		|:hardcopy| 命令
H  *+profile*		|:profile| 命令
m  *+python*		Python 接口 |python|
m  *+python/dyn*	Python 接口 |python-dynamic| |/dyn|
N  *+quickfix*		|:make| 和 |quickfix| 命令
N  *+reltime*		|reltime()| 函数
B  *+rightleft*		从右到左输入 |'rightleft'|
m  *+ruby*		Ruby 接口 |ruby|
m  *+ruby/dyn*		Ruby 接口 |ruby-dynamic| |/dyn|
N  *+scrollbind*	滚动绑定 |'scrollbind'|
B  *+signs*		标号 |:sign|
N  *+smartindent*	|'smartindent'|
m  *+sniff*		SniFF 接口 |sniff|
N  *+statusline*	'statusline'、'rulerformat' 选项和 'titlestring' 和
			'iconstring' 的特殊格式
m  *+sun_workshop*	|workshop|
N  *+syntax*		语法高亮 |syntax|
   *+system()*		只对 Unix 有效: |+fork| 的相反特性
N  *+tag_binary*	标签文件的二分查找 |tag-binary-search|
N  *+tag_old_static*	支持静态标签的旧方法 |tag-old-static|
m  *+tag_any_white*	标签文件里允许空白 |tag-any-white|
m  *+tcl*		Tcl 接口 |tcl|
m  *+tcl/dyn*		Tcl 接口 |tcl-dynamic| |/dyn|
   *+terminfo*		用 |terminfo| 代替 termcap
N  *+termresponse*	支持 |t_RV| 和 |v:termresponse|
N  *+textobjects*	文本对象 |text-objects| 选择
   *+tgetent*		只对非 Unix 有效: 可以使用外部 termcap
N  *+title*		设置窗口 |'title'|和 'icon'
N  *+toolbar*		GUI 工具栏 |gui-toolbar|
N  *+user_commands*	用户定义命令。|user-commands|
N  *+viminfo*		|'viminfo'|
N  *+vertsplit*		垂直分割窗口 |:vsplit|
N  *+virtualedit*	|'virtualedit'|
S  *+visual*		可视模式 |Visual-mode|
N  *+visualextra*	额外的可视模式命令 |blockwise-operators|
N  *+vreplace*		|gR| 和 |gr|
N  *+wildignore*	忽略文件通配 |'wildignore'|
N  *+wildmenu*		匹配菜单 |'wildmenu'|
S  *+windows*		多于一个窗口
m  *+writebackup*	|'writebackup'| 缺省打开
m  *+xim*		X 输入法 |xim|
   *+xfontset*		X 字体集支持 |xfontset|
   *+xsmp*		XSMP (X 会话管理) 支持
   *+xsmp_interact*	交互 XSMP (X 会话管理) 支持
N  *+xterm_clipboard*	只对 Unix 有效: xterm 剪贴板处理
m  *+xterm_save*	保存和恢复 xterm 屏幕 |xterm-screens|
N  *+X11*		只对 Unix 有效: 可以恢复窗口标题 |X11|

							*/dyn* *E370* *E448*
			有些特性可能会显示 "/dyn",表明该特性只有在动态调入相
			关库时才可用。

:ve[rsion] {nr}		现在已被忽略。以前用来检查 .vimrc 文件的版本号。现在取
			消的原因是因为你可以用 ":if" 命令区别不同版本的不同行
			为。{Vi 无此功能}

							*:redi* *:redir*
:redi[r][!] > {file}	重定向消息到文件 {file}。将命令的输出消息写到该文件,
			直到重定向结束。消息也同时显示在屏幕上。如果有 [!],覆
			盖已存在的文件。如果没有但文件 {file} 存在,该命令会失
			败。
			一次只能激活一个 ":redir"。也就是,调用 ":redir" 开始
			重定向到新的目标之前,任何已激活的重定向都会被关闭。
			如果不想在屏幕上显示消息或者命令的回显,在函数里调用命
			令,以 ":silent call Function()" 方式调用该函数。
			一个替代方案是使用 'verbosefile' 选项,它也可以和
			":redir" 组合使用。
			{Vi 无此功能}

:redi[r] >> {file}	重定向消息到文件 {file},如果文件 {file} 已存在,附加
			在其后。{Vi 无此功能}

:redi[r] @{a-zA-Z}>	重定向消息到寄存器 {a-z}。如果给出的名字是大写 {A-Z},
			附加到已有内容之后。为了后向兼容,寄存器名后的 '>' 可
			以省略。{Vi 无此功能}
:redi[r] @{a-z}>>	附加消息到寄存器 {a-z}{Vi 无此功能}

:redi[r] @*>
:redi[r] @+>		重定向消息到选择区或剪贴板。为了后向兼容,寄存器名后的
			'>' 可以省略。见 |quotestar| 和 |quoteplus|。
			{Vi 无此功能}
:redi[r] @*>>
:redi[r] @+>>		附加消息到选择区或剪贴板。{Vi 无此功能}

:redi[r] @">		重定向消息到无名寄存器。为了后向兼容,寄存器名后的 '>'
			可以省略。{Vi 无此功能}
:redi[r] @">>		附加消息到无名寄存器。{Vi 无此功能}

:redi[r] => {var}	重定向消息到变量。如果变量不存在,建立之。如果变量已经
			存在,它被初始化为空字符串,而且保持为空,直到重定向结
			束为止。只能使用字符串变量。重定向开始后,如果变量被删
			除或加锁或类型被改变,那么将来的命令输出消息会报错。
			{Vi 无此功能}

:redi[r] =>> {var}	附加消息到已有的寄存器。只能使用字符串变量。
			{Vi 无此功能}

:redi[r] END		结束消息的重定向。{Vi 无此功能}

						*:sil* *:silent*
:sil[ent][!] {command}	安静地执行命令 {command}。不显示正常的消息,也不会把它
			加进消息历史。
			如果有 [!],同时跳过错误消息,检测到错误时,命令和映射
			也也不会被终止。但还是会相应设置 |v:errmsg|。
			如果没有 [!],错误信息会使得其后的所有消息都被正常显
			示。
			|:redir| 开始的重定向会继续工作,但可能有些细微差异。
			命令输出仍然重定向,但屏幕上看不到。例如:
			    :redir >/tmp/foobar
			    :silent g/Aap/p
			    :redir END
			要安静地执行普通模式命令,用 |:normal| 命令。例如,要
			搜索字符串且不给出任何消息:
			    :silent exe "normal /path\<CR>"
			":silent!" 可以用来执行命令,不管该命令是否失败都继续
			执行。
			例如:
			    :let v:errmsg = ""
			    :silent! /^begin
			    :if v:errmsg != ""
			    : ... 模式没找到
			":silent" 还可以避免敲入回车 (hit-enter) 的提示。执行
			外部命令时,这可能会使屏幕显示混乱。这时,用 |CTRL-L|
			可以清理。
			":silent menu ..." 定义一个不会回显命令行命令的菜单。
			但该命令仍然产生消息。如果连这也不要,在命令本身前用
			":silent": ":silent menu .... :silent command"。

						*:verb* *:verbose*
:[count]verb[ose] {command}
			执行命令 {command},执行期间 'verbose' 设为 [count]。
			如果忽略 [count],缺省为 1。":0verbose" 可以用来设置
			'verbose' 为零。

			在此基础之上再应用 ":silent",可以产生相应详细度的消息
			但不显示。":silent" 和 ":verbose" 的组合因而可以只在内
			部产生消息,然后用 |v:statusmsg| 或相关命令进行检查。
			例如:
				:let v:statusmsg = ""
				:silent verbose runtime foobar.vim
				:if v:statusmsg != ""
				:  " foobar.vim 找不到
				:endif
<			如果和别的命令相连接,":verbose" 只适用于第一个命令:
				:4verbose set verbose | set verbose
				  verbose=4 
				  verbose=0 
			要记录 verbose 消息到文件,用 'verbosefile' 选项。

							*:verbose-cmd*
如果 'verbose' 非零,列出 Vim 选项、键映射、缩写、用户定义的函数或命令、高亮组
或者自动命令的值会同时显示它最近被定义的位置。如果手动定义,不会有这个 "Last
set" 消息。如果在执行函数、用户命令或者自动命令时定义,报告它定义所在的脚本。
{仅当编译时加入 +eval 特性才有效}

							*K*
K			运行程序,查找光标下的关键字。该程序的名字由
			'keywordprg' (kp) 选项给出 (缺省是 "man")。该关键字由
			字母、数值和 'iskeyword' 里的字符组成,它出现在光标所
			在或右侧的位置。以下命令可以达到同样的效果
				:!{program} {keyword}
			在 Vim 的 tools 目录下有一个示例程序。它叫作 'ref',做
			简单的拼写检查。
			特例:
			- 如果 'keywordprg' 为空,使用 ":help" 命令。此时,如
			  果要找到更多帮助,应该在 'iskeyword' 里加入更多的字
			  符。
			- 如果 'keywordprg' 是 "man",K 之前的计数会被插在
			  "man" 命令之后和关键字之前。例如,如果光标在 "mkdir"
			  之上用 "2K",结果是:
				!man 2 mkdir
			- 如果 'keywordprg' 是 "man -s", K 之前的计数会插在
			  "-s" 之后。如果没有计数,则去掉 "-s"。
			{Vi 无此功能}

							*v_K*
{Visual}K		和 "K" 类似,但用可视的高亮文本代替关键字。只在高亮文
			本不超过一行时有效。{Vi 无此功能}

[N]gs							*gs* *:sl* *:sleep*
:[N]sl[eep] [N]	[m]	停止 (睡眠) [N] 秒。如果有 [m],停止 [N] 毫秒。"gs" 前
			的计数总是表示秒数。缺省值是 1 秒。
			     :sleep	     "睡眠一秒
			     :5sleep	     "睡眠五秒
			     :sleep 100m     "睡眠一百毫秒
			     10gs	     "睡眠十秒
			可以被 CTRL-C (MS-DOS 上的 CTRL-Break) 中断。
			"gs" 代表 "goto sleep"。
			睡眠时如果在可见位置的话,光标定位于文本处。
			{Vi 无此功能}

							*g_CTRL-A*
g CTRL-A		只有在 Vim 编译时定义了 MEM_PROFILING 才有效 (这很少
			见): 显示内存用量的统计。只对调试 Vim 有用。


2. 线上帮助						*online-help*

			*help* *<Help>* *:h* *:help* *<F1>* *i_<F1>* *i_<Help>*
<Help>		或
:h[elp]			打开一个窗口并以只读方式显示帮助文件。如果已经打开了一
			个帮助窗口,就继续使用那个窗口。不然,如果当前窗口占据
			了屏幕的完整宽度或者至少有 80 个字符宽,帮助窗口会出现
			在当前窗口的正上方。再不然,新窗口就开在最上方。
			如果主帮助文件有多个语言版本,'helplang' 选项选择使用
			的语言。
			{Vi 无此功能}

						*{subject}* *E149* *E661*
:h[elp] {subject}	类似于 ":help",但附加跳转到 {subject} 标签上。
			{subject} 可以包含 "*"、"?" 和 "[a-z]" 这样的通配符:
			   :help z?	跳到任何包含 "z" 的命令的帮助
			   :help z.	跳到关于 "z." 的帮助
			如果不能完全匹配该模式,或者有多个匹配,那就使用 "最
			好" 的匹配。这里,有一个相当复杂的算法来排定匹配的优先
			顺序。它的计算涉及到以下诸方面:
			- 大小写完全相同的优先于大小写不完全相同的。
			- 开始于非字母数字之后的优先于从单词中间开始的。
			- 位于或接近标签开始处的优先于离此距离较远的。
			- 匹配的字母数字字符越多越优先。
			- 匹配越短的越优先。

			如果该 {subject} 有多个语言的帮助,'helplang' 选项用来
			选择所用的语言。要找到某个标签某个特定的语言版本,附加
			上 "@ab",其中 "ab" 是双字母的语言代码。参见
			|help-translated|。

			注意 给出越长的 {subect},找到的匹配就越少。使用命令行
			补全功能 (在 ":help subject" 之后输入 CTRL-D),你会了
			解这是如何工作的。
			如果有多个匹配,你可以通过敲击 CTRL-D 得到它们的列表。
			例如:
				:help cont<Ctrl-D>
			要使用正规式 |pattern|,先 ":help",然后在帮助窗口里使
			用 ":tag {pattern}"。这时,":tnext" 命令可以跳转到后一
			个匹配,"tselect" 列出所有的匹配并让你选择一个。
				:help index| :tse z.
			该命令可以后面跟一个 '|' 并紧跟另外一个命令。不过,你
			不需要在 help 命令里转义 '|'。所以下面这些都没问题:
				:help |
				:help k| only
			注意 如果 '|' 之前有空格,它是 ":help" 参数的一部分。
			你也可以用 <LF><CR> 来分隔 help 命令和其后的命令。
			你需要先输入 CTRL-V,再输入 <LF><CR>。例如:
				:help so<C-V><CR>only
			{Vi 无此功能}

:h[elp]! [subject]	类似于 ":help",但在非英语帮助文件里,先查找包含和当前
			文件相同语言的标签的文件。参见 |help-translated|。

							*:helpg* *:helpgrep*
:helpg[rep] {pattern}[@xx]
			搜索所有的帮助文本并给出一个匹配 {pattern} 行的列表。
			跳转到第一个匹配。
			可选的 [@xx] 指定只寻找 "xx" 语言里的匹配。
			你可以用 |quickfix| 命令来浏览其它的匹配。例如,
			|:cnext| 会跳到下一个。在 quickfix 窗口里,也可以用
			|:cwindow| 得到所有的匹配的列表。
			{pattern} 视为 Vim 的正规表达式 |pattern|。
			不使用 'ignorecase',你可以加上 "\c" 来忽略大小写。
			大小写敏感的搜索示例:
				:helpgrep Uganda
<			大小写不敏感的搜索示例:
				:helpgrep uganda\c
<			寻找中文帮助的搜索:
				:helpgrep backspace@cn
			后面不能跟其他的命令。其余部分都被当作模式的一部分。如
			果需要,可以用 |:execute|。
			不会在压缩的帮助文件里搜索 (Debian 压缩帮助文件)。
			{Vi 无此功能}

							*:lh* *:lhelpgrep*
:lh[elpgrep] {pattern}[@xx]
			类似于 ":helpgrep",除了使用位置列表代替 quickfix 列表
			之外。如果帮助窗口已经打开,使用该窗口的位置列表。不
			然,打开新帮助窗口,并设置该窗口的位置列表。当前窗口的
			位置列表不改变。

							*:exu* *:exusage*
:exu[sage]		显示 Ex 命令的帮助。目的是为了模拟对应的 Nvi 命令。
			{Vi 无此功能}

							*:viu* *:viusage*
:viu[sage]		显示普通命令的帮助。目的是为了模拟对应的 Nvi 命令。
			{Vi 无此功能}

如果不给出参数,|:help| 会打开 'helpfile' 选项指定的文件。否则,就会在
'runtimepath' 选项指定的多个路径中所有的 "doc/tags" 文件里查找所要求的标签。

帮助窗口的起始高度可以用 'helpheight' 选项来设置 (缺省是 20)。

标签用来跳转到指定的主题。有两种方法可以选择:
- 在命令或选项之上用 "CTRL-]" 命令。这只有在标签是关键字 (见 'iskeyword') 才
  行。"<C-Leftmouse>" 和 "g<LeftMouse>" 等价于 "CTRL-]"。
- 用 ":ta {subject}" 命令。这对于包含非关键字字符的标签也适用。

用 CTRL-T 或者 CTRL-O 跳回来。
用 ":q" 关闭帮助窗口。

如果你查找的项目有多个匹配,你可以这样依次跳转到每个匹配:
1. 先打开帮助窗口。
2. 用 ":tag" 命令,标签前加上斜杠。例如:
	:tag /min
3. 用 ":tnext" 跳转到下一个匹配的标签。

你可以为插件或其他项目增加帮助文件。为此,你并不需要修改现有的帮助文件。见
|add-local-help|。

关于如何写一个本地的帮助文件,见 |write-local-help|。

注意: 本地帮助文件的标题行会自动列在帮助文件 "help.txt" 的 "LOCAL ADDITIONS"
一节 |local-additions|。只有在 Vim 里实际察看该文件才会这么做,该文件本身并没
有被修改。这是通过动态地遍历所有帮助文件并提取每个文件的首行来完成的。其中,跳
过 $VIMRUNTINE/doc 里的文件。
(译者注: 目前,即使使用经过翻译的帮助,本地帮助文件只能在英文的 help.txt 里看
到。用 :help@en 访问。)

							*help-xterm-window*
如果你想在另外一个 xterm 窗口里察看帮助,可以用如下的命令:
	:!xterm -e vim +help &


			*:helpfind* *:helpf*
:helpf[ind]		和 |:help| 类似,但用一个对话框来提示输入参数。
			这只是为了向后兼容的需要。它现在执行 ToolBar.FindHelp
			菜单项而不是内建的对话框。
			{仅当编译时加入 |+GUI_GTK| 特性才有效}
			{Vi 无此功能}

					*:helpt* *:helptags*
				*E154* *E150* *E151* *E152* *E153* *E670*
:helpt[ags] {dir}	为目录 {dir} 生成帮助标签文件 tags。它扫描该目录中所有
			的 "*.txt" 和 "*.??x" 文件中帮助标签定义。标签定义出现
			在星号之间。"*.??x" 文件是经过翻译的文件。它们相应产生
			"tags-??" 文件,参见 |help-translated|。所生成的标签文
			件经过排序。
			如果其中有重复项,会给出错误信息。
			直接覆盖已有的标签文件,不会有提示。
			例如,要重建运行时目录的帮助标签 (需要有相应写权限):
				:helptags $VIMRUNTIME/doc
			{Vi 无此功能}


翻 译 帮 助 文 件					*help-translated*

除了原始的英语帮助文件外,我们可以添加其他语言的翻译版本。Vim 会在所有
'runtimepath' 的目录的 "doc" 子目录里查找帮助文件。这只有在编译时加入
|+multi_lang| 特性才会有效。

目前,有以下的翻译可用:
	中文     - 多位作者
	法语     - David Blanchet 翻译
	意大利语 - Antonio Colombo 翻译
	波兰语   - Mikolaj Machowski 翻译
	俄罗斯语 - Vassily Ragosin 翻译
在 Vim 网页上可以找到这些翻译: http://www.vim.org/translations.php

帮助文件的翻译版本包含如下文件:

	help.abx
	howto.abx
	...
	tags-ab

"ab" 是一个双字母的语言代码。这样,中文的文件名是:

	help.cnx
	howto.cnx
	...
	tags-cn

'helplang' 选项设置若干语言偏好。 缺省值根据当前环境设置。Vim 会先在偏好的语言
里查找匹配的标签。如果没有,就使用英语版本。

要查找某一特定的语言的标签,在标签后面加上 "@ab",其中的 "ab" 是两字节的语言代
码。示例:
	:he user-manual@cn
	:he user-manual@en
前者查找中文的用户手册,即使 'helplang' 为空。后者查找英语用户手册,即使
'helplang' 设置为 "cn"。

":help" 的命令行补全只会在有多个语言版本的标签时显示 "@en" 后缀。如果只有英语
版本,"@en" 就省略。

如果在一个非英语帮助文件里使用 |CTRL-]| 或者 ":help!",Vim 会先找相同语言的标
签。如果没有,再根据 'helplang' 选择语言。

Help 文件一定要使用 latin1 或 utf-8 编码。Vim 如果发现首行有非 ASCII 的字符,
就假设是 utf-8 编码。所以,你至少要翻译头部的 "For Vim version"。

同一个目录里相同语言的帮助文件必须使用相同的编码。不同语言或者相同语言但在不同
的目录下可以使用不同的编码。

为译者的提示:
- 不要翻译标签本身。这样才能用 'helplang' 来指定语言偏好。你可以在自己的语言里
  加入新的标签。
- 如果不想翻译文件的部分内容,用 "tag@en" 的形式标记英语版本的标签。
- 生成一个包,包含所有的帮助和和标签文件,以便下载。用户把它解开到某个 "doc"
  目录下就可以开始使用了。请告知 Bram,他可以在 www.vim.org 上给加一个链接。
- 用 |:helptags| 命令生成标签文件 tags。该命令会在指定目录下找到所有语言的版
  本。


3. 用 Vim 代替 less 或 more					*less*

如果你用 less 或 more 程序来查阅文件,你不会有语法高亮。所以,你也许会更喜欢
用 Vim。你可以用外壳脚本 "$VIMRUNTIME/macros/less.sh" 来做到这一点。

这个外壳脚本用到 Vim 脚本 "$VIMRUNTIME/macros/less.vim"。它设置了一些映射来模
拟 less 支持的命令。除此以外,你可以正常使用 Vim 命令。

这还没有尽善尽美。例如,即使查阅短的文件,Vim 还是会使用整屏。但对大多数应用而
言,这已经足够好了。何况你还有语法高亮呢。

"h" 键给你一个可用命令的简短小结。

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

Generated by vim2html on 2008年 03月 27日 星期四 17:04:45 CST