*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':如果该字符不是标准的 ASCII 字符,但据 'isprint' 选项可 以显示,则另给出不可显示的版本。另外,如果该字符大于 127,还显示
<R>
82, Hex 52, Octal 122<M-X>
形式的结果。例如:
<~A>
<M-^A>
129, Hex 81, Octal 201(其中的
<p>
<|~>
<M-~>
254, Hex fe, Octal 376<p>
是某个特殊字符) 文件里的<Nul>
字符内部以<NL>
存储,但显示为:如果字符有合成用字符,同时显示它们。'maxcombine' 的值 这时不起作用。 助记: 得到 (Get) Ascii 值。
<^@>
0, Hex 00, Octal 000{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\
":silent!" 可以用来执行命令,不管该命令是否失败都继续 执行。 例如:<CR>
":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' 里的字符组成,它出现在光标所 在或右侧的位置。以下命令可以达到同样的效果:!
在 Vim 的 tools 目录下有一个示例程序。它叫作 'ref',做 简单的拼写检查。 特例: - 如果 'keywordprg' 为空,使用 ":help" 命令。此时,如 果要找到更多帮助,应该在 'iskeyword' 里加入更多的字 符。 - 如果 'keywordprg' 是 "man",K 之前的计数会被插在 "man" 命令之后和关键字之前。例如,如果光标在 "mkdir" 之上用 "2K",结果是:{program}
{keyword}
!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* gCTRL-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
要使用正规式 |pattern|,先 ":help",然后在帮助窗口里使 用 ":tag<Ctrl-D>
{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