*various.txt* For Vim version 8.0. 最近更新: 2017年8月
VIM 参考手册 by Bram Moolenaar
译者: Willis
http://vimcdoc.sf.net
各种其他命令 *various*
1. 其他命令 |various-cmds|
2. 用 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 里加入如下的映射: >
< 如果你的 <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]。
|:filter| 命令可用来只显示匹配模式的行。
:[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 相同,但是不可显示字符用 '^' 代替,行尾加上
$。这可进一步用 'listchars' 选项改变。
|ex-flags| 说明 [flags]。
*:nu* *:number*
:[range]nu[mber] [count] [flags]
和 :print 相同,但每行之前显示行号 (也参见 'highlight'
和 'numberwidth' 选项)。
|ex-flags| 说明 [flags]。
*:#*
:[range]# [count] [flags]
和 :number 相同。
*:#!*
:#!{anything} 忽略,从而你可以用下面的方式开始 Vim 脚本: >
<
*:z* *E144*
:{range}z[+-^.=]{count} 显示包围 {range} 指定行的若干行文本,如果没有 {range},
这显示当前行上下的文本。如果有 {count},它指定你能看到
的行数。否则,如果只有一个窗口,使用 'scroll' 选项值的
两倍。再不然,使用当前的窗口大小减 3。
如果提供了 {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} 的执行就像从键盘输入
那样。撤销命令会撤销所有的命令。
如果发生错误,结束执行。
如果给出 [!],不使用映射。
如果没有,如果一个不可重新映射的映射 (|:noremap|) 调用
该命令,它的参数就因而还是有可能被重新映射。
{commands} 必须是完整的命令。如果 {commands} 没有完整
给出一个命令,未完成的最后那个命令会被终止,如同键入了
<Esc> 或 <C-C> 一样。
这意味着插入命令也必须完整 (要开始插入模式,
见 |:startinsert|)。":" 命令也必须完整。而且你不能用
"Q" 或 "gQ" 启动 Ex 模式。
":normal" 还在工作的时候,显示不会被刷新。
{commands} 不能以空格开始,如果要,前面加个计数 1
(一)。"1 " 就是一个空格。
{commands} 里忽略 'insertmode' 选项。
该命令后面不能跟其他命令。因为任何 '|' 都被认为是命令
的一部分。
该命令可以递归使用,但是深度不能超过 'maxmapdepth'。
一个替代的方法是 |:execute|,它可以用表达式作为参数。
这样就可使用可显示字符来代表特殊字符。
例如: >
< {Vi 当然无此功能}
:{range}norm[al][!] {commands} *:normal-range*
在 {range} 指定的范围中的每行执行若干普通模式命令
{commands}。在执行 {commands} 之前,光标先定位在该行的
第一列。除此以外,和没有给出范围的 ":normal" 命令并无
差别。
{Vi 无此功能}
*: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} 里的 '|' 会传给外壳,你不能用来附加 Vim 命令。
见 |:bar|。
如果 {cmd} 里包含 "%",被扩展为当前文件名。不转义特殊
字符,用引号以避免特殊含义: >
< 如果文件名包含 "$",用单引号较好 (但一个单引号会有麻
烦): >
< 总是可以这样做,但要多打点字: >
<
{cmd} 以换行符结尾,其后的内容被理解为另外一个 ":" 命
令。不过,如果换行之前有反斜杠,该反斜杠被去掉,{cmd}
继续接受参数。无论之前有多少个反斜杠都是如此。只有一个
会被去掉。
Unix 上命令通常在非交互的外壳里运行。如果你希望用交互
外壳 (比如要用别名机制 aliases),设置 'shellcmdflags'
为 "-ic"。Win32 上可参见 |:!start|。
命令执行后,检查当前文件的时间戮和大小 |timestamp|。
Vim 在命令结束以后重画屏幕,因为命令可能显示任何文本。
因此,你会有一个按回车的提示,以便你看到执行结果。要避
免这一点: >
< 这样屏幕就不会重画。如果确实有输出,你需要用 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*
*+acl* 包含 |ACL| 支持
*+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"
命令。
m *+channel* 进程间通信 |channel|
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'|
B *+conceal* "conceal" 支持,见 |conceal| |:syn-conceal| 等。
N *+cryptv* 加密支持 |encryption|
B *+cscope* 支持 |cscope|
m *+cursorbind* |'cursorbind'| 支持
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*
m *+directx* 只对 Win32 GUI 有效: DirectX 和 |'renderoptions'|
*+dnd* "~ 寄存器的拖放支持 |quote_~|。
B *+emacs_tags* |emacs-tags| 文件
N *+eval* 表达式计算 |eval.txt|
N *+ex_extra* 现在总是打开,用于 Vim 附加的 Ex 命令
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| 外壳命令
*+float* 浮点数支持
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| 插入模式补全
m *+job* 启动和终止作业 |job|
N *+jumplist* 跳转表 |jumplist|
B *+keymap* 键盘映射表 |'keymap'|
N *+lambda* |lambda| 和 |closure|
B *+langmap* 语言映射表 |'langmap'|
N *+libcall* 函数库调用 |libcall()|
N *+linebreak* |'linebreak'|、|'breakat'| 和 |'showbreak'|
N *+lispindent* |'lisp'|
N *+listcmds* Vim 的缓冲区列表相关命令 |buffer-hidden| 和参数列表
|:argdelete|
N *+localmap* 支持缓冲区的局部映射 |:map-local|
m *+lua* |Lua| 接口
m *+lua/dyn* |Lua| 接口 |/dyn|
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|
N *+mouse_jsbterm* JSB 鼠标处理 |jsbterm-mouse|
B *+mouse_netterm* 只对 Unix 有效: netterm 终端鼠标处理 |netterm-mouse|
N *+mouse_pterm* 只对 QNX 有效: pterm 终端鼠标处理 |qnx-terminal|
N *+mouse_sysmouse* 只对 Unix 有效: *BSD 控制台鼠标处理 |sysmouse|
B *+mouse_sgr* 只对 Unix 有效: sgr 鼠标处理 |sgr-mouse|
B *+mouse_urxvt* 只对 Unix 有效: urxvt 鼠标处理 |urxvt-mouse|
N *+mouse_xterm* 只对 Unix 有效: xterm 终端鼠标处理 |xterm-mouse|
N *+multi_byte* 16 和 32 位字符 |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|
*+num64* 64-位数值支持 |Number|
m *+ole* 只对 Win32 GUI 有效: |ole-interface|
N *+packages* 载入 |packages|
N *+path_extra* 'path' 和 'tags' 的向上和向下搜索
m *+perl* Perl 接口 |perl|
m *+perl/dyn* Perl 接口 |perl-dynamic| |/dyn|
N *+persistent_undo* 撤销的持久性 |undo-persistence|
*+postscript* |:hardcopy| 可以写 PostScript 文件
N *+printer* |:hardcopy| 命令
H *+profile* |:profile| 命令
m *+python* Python 2 接口 |python|
m *+python/dyn* Python 2 接口 |python-dynamic| |/dyn|
m *+python3* Python 3 接口 |python|
m *+python3/dyn* Python 3 接口 |python-dynamic| |/dyn|
N *+quickfix* |:make| 和 |quickfix| 命令
N *+reltime* |reltime()| 函数,'hlsearch'/'incsearch' 超时,
'redrawtime' 选项
B *+rightleft* 从右到左输入 |'rightleft'|
m *+ruby* Ruby 接口 |ruby|
m *+ruby/dyn* Ruby 接口 |ruby-dynamic| |/dyn|
N *+scrollbind* 滚动绑定 |'scrollbind'|
B *+signs* 标号 |:sign|
N *+smartindent* |'smartindent'|
N *+startuptime* |--startuptime| 参数
N *+statusline* 'statusline'、'rulerformat' 选项和
'titlestring' 和 'iconstring' 的特殊格式
m *+sun_workshop* |workshop|
N *+syntax* 语法高亮 |syntax|
*+system()* 只对 Unix 有效: |+fork| 的相反特性
T *+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|
B *+termguicolors* xterm 兼容的终端 24 位色彩支持
N *+textobjects* 文本对象 |text-objects| 选择
*+tgetent* 只对非 Unix 有效: 可以使用外部 termcap
N *+timers* |timer_start()| 函数
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| 7.4.200 开始总是打开
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|
*+xpm* pixmap 支持
m *+xpm_w32* 只对 Win32 GUI 有效: pixmap 支持 |w32-xpm-support|
*+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" 开始
重定向到新的目标之前,任何已激活的重定向都会被关闭。要
递归调用,请查看 |execute()|。
如果不想在屏幕上显示消息或者命令的回显,在函数里调用命
令,以 ":silent call Function()" 方式调用该函数。
一个替代方案是使用 'verbosefile' 选项,它也可以和
":redir" 组合使用。
{Vi 无此功能}
:redi[r] >> {file} 重定向消息到文件 {file},如果文件 {file} 已存在,附加
在其后。{Vi 无此功能}
:redi[r] @{a-zA-Z}
: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 无此功能}
要得到一个命令的输出,可用 |execute()| 函数。
:redi[r] =>> {var} 附加消息到已有的变量。只能使用字符串变量。
{Vi 无此功能}
:redi[r] END 结束消息的重定向。{Vi 无此功能}
*:filt* *:filter*
:filt[er][!] {pat} {command}
:filt[er][!] /{pat}/ {command}
找到 {command} 的输出里匹配 {pat} 的行。例如,要只列出
xml 文件: >
< 如果给出 [!],只限 {command} 的输出里_不_匹配 {pat} 的
行。
{pat} 是 Vim 搜索模式。不一定要用 / 包围,可以用任何非
ID 字符 (见 |'isident'|),只要不在 {pat} 里出现。如果
不使用包围字符,模式里不能包含竖杠字符。
模式匹配输出的相关部分,不一定是整行。只有部分命令支持
过滤,先试试看能不能用。
只过滤正常信息,不过滤错误信息。
*:sil* *:silent* *:silent!*
:sil[ent][!] {command} 安静地执行命令 {command}。不显示正常的消息,也不会把它
加进消息历史。
如果有 [!],同时跳过错误消息,检测到错误时,命令和映射
也也不会被终止。但还是会相应设置 |v:errmsg|。
如果没有 [!],错误信息会使得其后的所有消息都被正常显
示。
|:redir| 开始的重定向会继续工作,但可能有些细微差异。
命令输出仍然重定向,但屏幕上看不到。例如: >
< 要安静地执行普通模式命令,用 |:normal| 命令。例如,要
搜索字符串且不给出任何消息: >
< ":silent!" 可以用来执行命令,不管该命令是否失败都继续
执行。
例如: >
< ":silent" 还可以避免敲入回车 (hit-enter) 的提示。执行
外部命令时,这可能会使屏幕显示混乱。这时,用 |CTRL-L|
可以清理。
":silent menu ..." 定义一个不会回显命令行命令的菜单。
但该命令仍然产生消息。如果连这也不要,在命令本身前用
":silent": ":silent menu .... :silent command"。
*:uns* *:unsilent*
:uns[ilent] {command} 非安静模式执行命令 {command}。仅当在用了 |:silent| 之
后才有意义。
用此命令可以在用了 |:silent| 之后还是可以给出消息。下
例中,|:silent| 用于避免读入文件时给出消息,而
|:unsilent| 用于列出每个文件的第一行。 >
<
*:verb* *:verbose*
:[count]verb[ose] {command}
执行命令 {command},执行期间 'verbose' 设为 [count]。
如果忽略 [count],缺省为 1。":0verbose" 可以用来设置
'verbose' 为零。
在此基础之上再应用 ":silent",可以产生相应详细度的消息
但不显示。":silent" 和 ":verbose" 的组合因而可以只在内
部产生消息,然后用 |v:statusmsg| 或相关命令进行检查。
例如: >
< 如果和别的命令相连接,":verbose" 只适用于第一个命令: >
< verbose=4 ~
verbose=0 ~
要记录 verbose 消息到文件,用 'verbosefile' 选项。
*:verbose-cmd*
如果 'verbose' 非零,列出 Vim 选项、键映射、缩写、用户定义的函数或命令、高亮组
或者自动命令的值会同时显示它最近被定义的位置。如果手动定义,不会有这个 "Last
set" 消息。如果在执行函数、用户命令或者自动命令时定义,报告它定义所在的脚本。
{仅当编译时加入 |+eval| 特性才有效}
*K*
K 运行程序,查找光标下的关键字。该程序的名字由
'keywordprg' (kp) 选项给出 (缺省是 "man")。该关键字由
字母、数值和 'iskeyword' 里的字符组成,它出现在光标所
在或右侧的位置。以下命令可以达到同样的效果 >
< 在 Vim 的 tools 目录下有一个示例程序。它叫作 "ref",做
简单的拼写检查。
特例:
- 如果 'keywordprg' 以 ":" 开始,作为带 [count] 的 Vim
Ex 命令进行调用。
- 如果 'keywordprg' 为空,使用 ":help" 命令。此时,如
果要找到更多帮助,应该在 'iskeyword' 里加入更多的字
符。
- 如果 'keywordprg' 是 "man" 或以 ":" 开始,K 之前的
[count] 会被插在 keywordprg 之后和关键字之前。例如,
如果光标在 "mkdir" 之上用 "2K",结果是: >
< - 如果 '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 秒。 >
< 可以被 CTRL-C (MS-DOS 上的 CTRL-Break) 中断。
"gs" 代表 "goto sleep"。
睡眠时如果在可见位置的话,光标定位于文本处。
{Vi 无此功能}
*g_CTRL-A*
g CTRL-A 只有在 Vim 编译时定义了 MEM_PROFILING 才有效 (这很少
见): 显示内存用量的统计。只对调试 Vim 有用。
关于可视模式下的增量,见 |v_g_CTRL-A|。
==============================================================================
2. 用 Vim 代替 less 或 more *less*
如果你用 less 或 more 程序来查阅文件,你不会有语法高亮。所以,你也许会更喜欢
用 Vim。你可以用外壳脚本 "$VIMRUNTIME/macros/less.sh" 来做到这一点。
这个外壳脚本用到 Vim 脚本 "$VIMRUNTIME/macros/less.vim"。它设置了一些映射来模
拟 less 支持的命令。除此以外,你可以正常使用 Vim 命令。
这还没有尽善尽美。例如,即使查阅短的文件,Vim 还是会使用整屏。但对大多数应用而
言,这已经足够好了。何况你还有语法高亮呢。
"h" 键给你一个可用命令的简短小结。
如果你想设置和 less 不同的选项,在 vimrc 里定义 LessInitFunc,例如: >
<