Vim 奇淫巧技

记录下 Vim 的各种奇淫巧技,备查。

重映射

Vim 有两种常用的模式,insert 和 normal,在 normal 模式下按 i 可以进入 insert 模式,按 ESC 键可以退出 insert 模式进入 normal 模式,问题在于 ESC 键距离太远,频繁使用效率不高,因此修改 ~/.vimrc 文件,添加以一行将 jk 映射为 ESC:

1
inoremap jk <ESC>

查找与替换

这部分内容参考了 在 Vim 中优雅地查找和替换

简单查找

在 normal 模式下输入 / 即可进入查找模式,输入要查找的字符串并按下回车后跳转到第一个匹配项,按 n 查找下一个,按 N 查找上一个。

如果查找的是换行符应当用 \n,而替换为换行符则用 \r(相当于<CR>)。

搜索后如果需要退出高亮模式 :nohl

查找当前词

在 normal 模式下按 * 即可查找光标所在单词,要求每次出现的前后为空白字符或标点符号。例如当前为foo, 可以匹配 foo bar 中的 foo,但不可匹配 foobar 中的 foo。 这在查找函数名、变量名时非常有用。

按下 g* 可查找光标所在单词的字符序列,每次出现前后字符无要求。 即 foo barfoobar 中的 foo 均可被匹配到。

由于 Vim 默认大小写敏感进行匹配,在很多时候并不方便,可以在 ~/.vimrc 里进行配置:

1
2
3
4
# 设置默认进行大小写不敏感查找
set ignorecase
# 如果有一个大写字母,则切换到大小写敏感查找
set smartcase

替换

在 normal 模式下输入:s(substitute)命令查找和替换字符串。语法如下:

1
:{作用范围}s/{目标}/{替换}/{替换标志}

比如 :%s/foo/bar/g 会在全局范围(%)查找 foo 并替换为 bar,所有出现都会被替换(g)。