Vim 学习笔记 No.2
命令行模式
适用于远距离操作。命令都在:
命令行中执行,:
省去。
1 指定范围
{num}
第 num 行,注意可以有虚拟行 0{start},{end}
从 {start} 到 {end}- 其中:
.
可代表当前行,$
可代表文末 'm
包含标记 m 的行- 也可使用模式,如 /<html>/
- 地址修正
{address}[+-]n
形式,如/<html>/+1,/<\/html>/-1
。若 n 被省略,默认偏移为 1
- 其中:
%
代表全局
2 复制与移动
分别使用t
和m
完成,格式为{from}[tm]{to}
,若省略{from}部分,则默认对当前行进行操作。
注意 这两个操作不使用寄存器。
3 普通模式操作
normal
之后的命令作为普通模式命令执行,可简写为norm
。
例:% norm I 2333
4 重复上一次的 Ex 命令
@:
用于重复上次的 Ex 命令( :
寄存器保存着最后执行的命令行命令)。
运行过一次@:
后,可以使用@@
来重复它。
ps: .
对 Ex 命令无效
5 自动补全 Ex 命令
众所周知,使用 Tab 键可以自动补全命令,且多次按 \<Tab>
键可以遍历列表。若要反向遍历列表,可以用 \<S-Tab>
。
此外,可以使用 \<C-d>
显示可用的补全列表。
进一步地对补全方式和补全列表进行设置,可以使用help wildmode
进行查看。个人建议set wildmenu=list:full
6 将当前单词插入命令行
\<C-r>
\<C-w>
将光标所在单词插入命令行(\<C-r>
\<C-a>
可将字串插入命令行)
想想在全局替换中这个命令会有多有用吧!
7 回溯历史命令
使用 \<C-n>
和 \<C-p>
,或者 \<Up>
和 \<Down>
按曾输入过的命令进行补全。当然,我会推荐 \<C-n>
和 \<C-p>
(不然你用 vim 有何意义)。
这里需要注意, \<C-n>
和 \<C-p>
不会根据已经输入的内容调整补全。可在.vimrc 文件中加入一下自定义映射项:
cnoremap <C-p> <Up>
cnoremap <C-n> <Down>
8 命令行窗口
按q:
可打开命令行窗口。在命令行窗口中,可使用正常编辑的动作进行编辑,唯一不同的是按下 \<CR>
后,会执行当前行的命令。
正在命令行上构建 Ex 命令时,可按 \<C-f>
切换到命令行窗口,且已经输入的内容会得到保留。