CTRL-L
CTRL-L
清屏并重画屏幕。重画可能稍后发生,在处理完预读入之后。
:redr :redraw
:redr[aw][!] 立即重画屏幕。如果有 !,先清屏。
这对在执行脚本或函数的中间要刷新屏幕,或者在置位了
'lazyredraw' 而执行映射的过程中间都有用。
:redraws :redrawstatus
:redraws[tatus][!] 重画当前窗口的状态行。如果有 !,重画所有的状态行。它适
用于 'statusline' 包含有不能自动更新项目的时候。
:redrawt :redrawtabline
:redrawt[abline] 重画标签页行。用于 'tabline' 包含不能触发自动更新的项
目的时候来更新标签页行。
N<Del>
<Del>
输入数字的时候: 删除上一位数字。 注意
: 如果你想要 <BS>
做同样的事,在 .vimrc 里加入如下的映射:
:map CTRL-V <BS> CTRL-V <Del>
如果你的 <Del>
键工作不正常,可参见 :fixdel 。
:as[cii] 或 ga :as :ascii
ga 显示光标下字符的 ascii 值,分别以十进制、十六进制和八
进制显示。
助记: 得到 (Get) 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' 的值这
时不起作用。
如果该字符可用二合字母插入,也输出可用于创建该字符的两
个字符:
<ö> 246, Hex 00f6, Oct 366, Digr o:
显示可以按 CTRL-K
o : 来插入 ö。
g8
g8 显示光标下字符 (假定其为 UTF-8 编码) 的各字节的十六
进制值。它会同时显示组合字符。'maxcombine' 的值这时不
起作用。
一个带三个组合字符的字符示例:
e0 b8 81 + e0 b8 b9 + e0 b9 89
8g8
8g8 寻找光标所在或之后的非法 UTF-8 字节序列。两种情形下这
可以工作:
1. 如果 'encoding' 是任何 8 位编码
2. 如果 'encoding' 是 "utf-8" 而 'fileencoding' 是任何
8 位编码
所以它可以用来编辑本来应该是 UTF-8 但因为包含了非法字
节而读入时被当作 8 位编码的文件。
文件尾不回绕。
注意
如果光标在非法字节上或者光标在多字节字符的中间,
此命令不移动光标。
: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 键太久的人用的 ...
Vim9 脚本不支持此命令。
备注
: 用户命令可以覆盖此命令。
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 脚本:
#!vim -S
echo "this is a Vim script"
quit
:z E144
:[range]
z[+-^.=][count]
显示包围 [range]
指定行的若干行文本,如果没有
[range]
,显示当前行上下的文本。
如果有 [count]
,它指定你能看到的行数。如果没有 [count]
且只有一个窗口,使用 'scroll' 选项值的两倍。再不然,使
用当前的窗口大小减 3。这就是下表中所谓 1 屏的值。
如果提供了 [count]
,'window' 选项会被设为该值。
:z 可以单独使用,也可以后跟数个标记中的一个。他们有如
下的效果:
标记 首行 末行 新光标行
---- ---------- --------- ------------
+ 当前行 向前 1 屏 向前 1 屏
- 向后 1 屏 当前行 当前行
^ 向后 2 屏 向后 1 屏 向后 1 屏
. 向后 1/2 屏 向前 1/2 屏 向前 1/2 屏
= 向后 1/2 屏 向前 1/2 屏 当前行
不指定任何标记相当于指定 "+"。如果标记是 "=",当前行会
被连字符组成的两行包围。
:z!
:[range]
z![+-^.=][count]
和 ":z" 类似,但如果没有 [count]
,缺省为 Vim 窗口高度
减一。
:[range]
z[!]#[+-^.=][count]
:z#
和 ":z" 或 ":z!" 类似,但显示行号。
:=
:= [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 ,它可以用表达式作为参数。
这样就可使用可显示字符来代表特殊字符。
例如:
:exe "normal \<c-w>\<c-w>"
:{range}
norm[al][!] {commands}
:normal-range
在 {range}
指定的范围中的每行执行若干普通模式命令
{commands}
。在执行 {commands}
之前,光标先定位在该行的
第一列。除此以外,和没有给出范围的 ":normal" 命令并无
差别。
:sh :shell E371
:sh[ell] 该命令启动一个外壳。外壳退出后 (执行完 "exit" 命令),
你会回到 Vim。外壳命令的名字来自 'shell' 选项。
E360
注意
: 当 Vim 在 Amiga 上通过编译器的快速修复模式时启动
时,该命令不能使用。这是因为编译器把标准输入设为非交互
模式。
:!cmd :!
:!{cmd}
在外壳里执行 {cmd}
命令。也可参见 'shell' 和
'shelltype' 选项。
E34
{cmd}
里的任何 '!' 都被前一个外部命令所取代 (参见
'cpoptions'),除非之前有反斜杠。这时反斜杠被去掉。例
如: "!ls" 之后的 "!echo ! \! \\!" 实际执行
"echo ls ! \!"。
命令执行之后,检查当前文件的修改时间 timestamp 。
{cmd}
里的 '|' 会传给外壳,你不能用来附加 Vim 命令。
见 :bar 。
如果 {cmd}
里包含 "%",它被扩展为当前文件名,"#" 则被
扩展为轮换文件名。不转义特殊字符,用引号可避免其特殊含
义:
:!ls "%"
如果文件名包含 "$",用单引号较好,但只适用于不包含单引
号的文件名:
:!ls '%'
总是可以这样做,但要多打点字:
:exe "!ls " .. shellescape(expand("%"))
要得到按本义出现的 "%" 或 "#",在它之前附加反斜杠。例
如,要列出所有以 "%" 开头的文件:
:!ls \%*
{cmd}
以换行符结尾,其后的内容被理解为另外一个 ":" 命
令。不过,如果换行之前有反斜杠,该反斜杠被去掉,{cmd}
继续接受参数。无论之前有多少个反斜杠都是如此。只有一个
会被去掉。
Unix 上命令通常在非交互的外壳里运行。如果你希望用交互
外壳 (比如要用别名机制 aliases),设置 'shellcmdflag'
为 "-ic"。Win32 上可参见 :!start 。
命令执行后,检查当前文件的时间戮和大小 timestamp 。
Vim 在命令结束以后重画屏幕,因为命令可能显示任何文本。
因此,你会有一个按回车的提示,以便你看到执行结果。要避
免这一点:
:silent !{cmd}
这样屏幕就不会重画。如果确实有输出,你需要用 CTRL-L
或
":redraw!" 来刷新。
参见 shell-window 。
:!!
:!! 重复上次的 ":!{cmd}
"。
:ve :ver :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
B +autochdir 支持 'autochdir' 选项
T +autocmd :autocmd ,自动命令
H +autoservername 自动打开 clientserver
m +balloon_eval GUI 上气泡表达式支持 balloon-eval 。如果编译时包含支
持的 GUI (Motif、GTK、GUI) 同时还有 Netbeans/Sun
Workshop 集成或者 +eval 特性之一就包含此特性。
H +balloon_eval_term 终端上气泡表达式支持 balloon-eval ,'balloonevalterm'
N +browse :browse 命令
N +builtin_terms 一些内建终端项 builtin-terms
B ++builtin_terms 最大内建终端项支持 builtin-terms
N +byte_offset 支持 'statusline' 选项的 'o' 标志位、"go" 和 ":goto"
命令。
m +channel 进程间通信 channel
6 +cindent 'cindent' ,C 缩进
N +clientserver Unix 和 Win32: 远程调用 clientserver
+clipboard 编译时加入了剪贴板支持 clipboard
+clipboard_working 编译时加入了剪贴板支持 clipboard 且可用
T +cmdline_compl 命令行补全 cmdline-completion
T +cmdline_hist 命令行历史 cmdline-history
N +cmdline_info 'showcmd' 和 'ruler'
S +cmdwin cmdline-window 支持
T +comments 支持 'comments'
B +conceal "conceal" 支持,见 conceal :syn-conceal 等。
N +cryptv 加密支持 encryption
B +cscope 支持 cscope
T +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
+directx 只对 Win32 GUI 有效: DirectX 和 'renderoptions'
+dnd "~ 寄存器的拖放支持 quote_~ 。
B +emacs_tags emacs-tags 文件
N +eval 表达式计算 eval.txt
T +ex_extra 现在总是打开,用于 Vim 附加的 Ex 命令
N +extra_search 'hlsearch' 和 'incsearch' 选项。
- +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
+iconv 编译时有 iconv() 函数
+iconv/dyn 类似 iconv-dynamic /dyn
T +insert_expand insert_expand 插入模式补全
m +ipv6 IPv6 网络 channel 支持
m +job 启动和终止作业 job
T +jumplist 跳转表 jumplist ;8.2.3795 开始总是打开
B +keymap 键盘映射表 'keymap'
N +lambda lambda 和 closure
B +langmap 语言映射表 'langmap'
N +libcall 函数库调用 libcall()
N +linebreak 'linebreak' 、 'breakat' 和 'showbreak'
t +lispindent 'lisp'
T +listcmds Vim 的缓冲区列表相关命令 buffer-hidden 和参数列表
:argdelete
T +localmap 支持缓冲区的局部映射 :map-local
m +lua Lua 接口
m +lua/dyn Lua 接口 /dyn
N +menu 菜单 :menu
N +mksession 创建会话 :mksession
T +modify_fname 文件名修饰符 filename-modifiers
T +mouse 鼠标处理 mouse-using
N +mouseshape 鼠标形状 'mouseshape'
B +mouse_dec 只对 Unix 有效: Dec 终端鼠标处理 dec-mouse
N +mouse_gpm 只对 Unix 有效: Linux 终端鼠标处理 gpm-mouse
m +mouse_gpm/dyn 同 +mouse_gpm 相同,带可选的库依赖 /dyn
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
T +multi_byte Unicode 支持,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
T +num64 64-位数值支持 Number
8.2.0271 开始总是打开,v:numbersize 可用来检查数值型的
实际大小。
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
N +popupwin 弹出窗口 popup-window
+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
T +scrollbind 滚动绑定 'scrollbind'
B +signs 标号 :sign
t +smartindent 'smartindent'
B +sodium 编译里加入了 libsodium,用于更好的加密支持
B +sound sound_playevent() 、 sound_playfile() 函数等等
N +spell 拼写检查支持,见 spell
N +startuptime --startuptime 参数
N +statusline 'statusline'、'rulerformat' 选项和
'titlestring' 和 'iconstring' 的特殊格式
- +sun_workshop 已删除: workshop
N +syntax 语法高亮 syntax
+system() 只对 Unix 有效: +fork 的相反特性
T +tag_binary 标签文件的二分查找 tag-binary-search
- +tag_old_static 已删除: 支持静态标签的旧方法 tag-old-static
- +tag_any_white 已删除: 标签文件里允许空白 tag-any-white
m +tcl Tcl 接口 tcl
m +tcl/dyn Tcl 接口 tcl-dynamic /dyn
m +terminal 终端窗口支持 terminal
+terminfo 用 terminfo 代替 termcap
N +termresponse 支持 t_RV 和 v:termresponse
B +termguicolors xterm 兼容的终端 24 位色彩支持
N +textobjects 文本对象 text-objects 选择
N +textprop text-properties
+tgetent 只对非 Unix 有效: 可以使用外部 termcap
N +timers timer_start() 函数
T +title 设置窗口 'title' 和 'icon';总是打开
N +toolbar GUI 工具栏 gui-toolbar
T +user_commands 用户定义命令。 user-commands
8.1.1210 开始总是打开。
B +vartabs 可变宽度制表位。 'vartabstop'
T +vertsplit 垂直分割窗口 :vsplit ;8.0.1118 开始总是打开。
T +vim9script Vim9 支持
N +viminfo 'viminfo'
T +virtualedit 'virtualedit' 8.1.826 开始总是打开。
T +visual 可视模式 Visual-mode 7.4.200 开始总是打开。
T +visualextra 额外的可视模式命令 blockwise-operators
T +vreplace gR 和 gr
+vtp MS-Windows 控制台上: 'termguicolors' 的支持
N +wildignore 忽略文件通配 'wildignore'
N +wildmenu 匹配菜单 'wildmenu'
T +windows 多于一个窗口;8.0.1118 开始总是打开。
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" 命令区别不同版本的不同行
为。
:redi :redir
:redi[r][!] > {file}
重定向消息到文件 {file}
。将命令的输出消息写到该文件,
直到重定向结束。消息也同时显示在屏幕上。如果有 [!],覆
盖已存在的文件。如果没有但文件 {file}
存在,该命令会失
败。
一次只能激活一个 ":redir"。也就是,调用 ":redir" 开始
重定向到新的目标之前,任何已激活的重定向都会被关闭。要
递归调用,请查看 execute() 。
如果不想在屏幕上显示消息或者命令的回显,在函数里调用命
令,以 ":silent call Function()" 方式调用该函数。
一个替代方案是使用 'verbosefile' 选项,它也可以和
":redir" 组合使用。
:redi[r] >> {file}
重定向消息到文件 {file}
,如果文件 {file}
已存在,附加
在其后。
:redi[r] @{a-zA-Z}
:redi[r] @{a-zA-Z}
> 重定向消息到寄存器 {a-z}
。如果给出的名字是大写 {A-Z}
,
附加到已有内容之后。寄存器名后的 '>' 可选。
:redi[r] @{a-z}
>> 附加消息到寄存器 {a-z}
。
:redi[r] @*>
:redi[r] @+> 重定向消息到选择区或剪贴板。为了后向兼容,寄存器名后的
'>' 可以省略。见 quotestar 和 quoteplus 。
:redi[r] @*>>
:redi[r] @+>> 附加消息到选择区或剪贴板。
:redi[r] @"> 重定向消息到无名寄存器。为了后向兼容,寄存器名后的 '>'
可以省略。
:redi[r] @">> 附加消息到无名寄存器。
E1092
:redi[r] => {var}
重定向消息到变量。
老式脚本里: 如果变量不存在,建立之。如果变量已经存在,
它被初始化为空字符串。重定向开始后,如果变量被删除或加
锁或类型被改变,那么之后的命令输出消息会报错。使用局部
变量 (函数里的 l:var 或脚本里的 s:var) 时,另一个
:redir 会使当前的重定向结束,作用域可能会改变而赋值
失败。
Vim9 脚本里: 变量必须已声明为字符串类型。
此变量保持为空,直到重定向结束为止。
只能使用字符串变量。
要得到一个命令的输出,可用 execute() 函数而不是重定
向。
:redi[r] =>> {var}
附加消息到已有的变量。只能使用字符串变量。
E1185
:redi[r] END 结束消息的重定向。
:filt :filter
:filt[er][!] {pattern}
{command}
:filt[er][!] /{pattern}
/ {command}
找到 {command}
的输出里匹配 {pattern}
的行。例如,要只
列出 xml 文件:
:filter /\.xml$/ oldfiles
如果给出 [!],只限 {command}
的输出里 不
匹配
{pattern}
的行。
{pattern}
是 Vim 搜索模式。不一定要用 / 包围,可以用任
何非 ID 字符 (见 'isident' ),只要不在 {pattern}
里出
现。如果不使用包围字符,模式里不能包含竖杠字符。此处不
考虑 'ignorecase'。
模式匹配输出的相关部分,不一定是整行。只有部分命令支持
过滤,先试试看能不能用。一些支持过滤的命令:
:# - 过滤整行
:clist - 按文件名或模块名过滤
:command - 按命令名过滤
:files - 按文件名过滤
:highlight - 按高亮组过滤
:jumps - 按文件名过滤
:let - 按变量名过滤
:list - 过滤整行
:llist - 按文件名或模块名过滤
:marks - 按当前文件的文本或其它文件的文件名
过滤
:oldfiles - 按文件名过滤
:registers - 按寄存器内容过滤 (不能用于多行)
:set - 按选项名过滤
只过滤正常信息,不过滤错误信息。
:sil :silent :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"。
:uns :unsilent
:uns[ilent] {command}
非安静模式执行命令 {command}
。仅当在用了 :silent 之
后才有意义。
用此命令可以在用了 :silent 之后还是可以给出消息。下
例中, :silent 用于避免读入文件时给出消息,而
:unsilent 用于列出每个文件的第一行。
:silent argdo unsilent echo expand('%') .. ": " .. getline(1)
: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' 以 ":" 开始,作为带 [count]
的 Vim
Ex 命令进行调用。
- 如果 'keywordprg' 为空,使用 ":help" 命令。此时,如
果要找到更多帮助,应该在 'iskeyword' 里加入更多的字
符。
- 如果 'keywordprg' 是 "man" 或以 ":" 开始,K 之前的
[count]
会被插在 keywordprg 之后和关键字之前。例如,
如果光标在 "mkdir" 之上用 "2K",结果是:
!man 2 mkdir
- 如果 'keywordprg' 是 "man -s",K 之前的计数会插在
"-s" 之后。如果没有计数,则去掉 "-s"。
v_K
{Visual}
K 和 "K" 类似,但用可视的高亮文本代替关键字。只在高亮文
本不超过一行时有效。
[N]gs gs :sl :sleep
:[N]sl[eep] [N]
[m] 停止 (睡眠) [N]
秒。如果有 [m]
,停止 [N]
毫秒。"gs" 前
的计数总是表示秒数。缺省值是 1 秒。
:sleep "睡眠一秒
:5sleep "睡眠五秒
:sleep 100m "睡眠 100 毫秒
10gs "睡眠十秒
可以被 CTRL-C
(MS-Windows 上的 CTRL-Break
) 中断。
"gs" 代表 "goto sleep"。
睡眠时如果在可见位置的话,光标定位于文本处。
也处理接收到的 netbeans 信息。{仅当编译时加入
+netbeans_intg 特性才有效}
:sl! :sleep!
:[N]sl[eep]! [N]
[m] 同上,但隐藏光标。
:xrestore :xr
:xr[estore] [display]
重新初始化 X11 服务器的连接。X 服务器重启后有用,例如
在 screen/tmx 内运行 Vim 很长时间,并连接到不同机器的
时候。
[display]
应为 $DISPLAY 环境变量使用的格式 (如
"localhost:10.0")
如果省略 [display]
,使用之前运行此命令时使用的值来重新
初始化 X11 服务器的连接。如果该值从未提供过,使用 Vim
启动时 $DISPLAY 环境变量的值。
{仅当编译时加入 +clipboard 特性才有效}
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,例如:
func LessInitFunc()
set nocursorcolumn nocursorline
endfunc
vim:tw=78:ts=8:noet:ft=help:norl: