18 Dec 2016 | 软件
关于Vim的使用技巧网上有一大堆,然而在下记性不好。网上的教程太杂,毕竟不是为自己量身打造真正需要的,再者,每次临时搜索太耗时间。最近在看《Vim实用技巧》,此处笔记只是为了备忘。
别看错,就是”.”,这是重复上次修改。
查找当前光标下的单词,查找命令可以配合 n 使用,可以跳到下一个匹配项。
cw 删除从光标处到单词结尾处的单词。db 反向删除从光标起始位置到单词开头的内容。dw 删除一个单词。x 删除当前字符。dap 删除一个段落。
在插入模式下可以用组合键 <C-w> 删除前一个单词,用<C-u> 删除到行首。(这在shell中也适用)
批量替换:可以使用 * 查找所有的匹配项,然后用 cw 删除,输入修改后的值,按<Esc>,再用 n 跳到下一个匹配项,按 . 重复以上一组操作。 如果是想替换所有的可以用 :%s/old/new/g 。
ATTENTION:在Vim中 操作符 + 动作命令 = 操作
把当前单词转换成大写,同理,把w换成p就是当前段落。u 就是小写。
重绘屏幕,并把当前行显示在屏幕正中。
在插入模式下输入 <C-r>= ,再输入要运算的表达式,按回车即可把结果插入到当前位置。注意运算符应为英文模式下的运算符。另外 ga 命令可以查看当前字符的十进制和十六进制字符编码。
f 后紧跟一个字符可以查找该字符并跳转。
输入 v 可进入可视模式。<C-v> 激活面向列块的可视模式。用 o 来重新调整选区边界。可以用来配合 > 进行批量缩进。
用 r{char} 可替换字符。
:行号 可以跳到指定行。
:{start},{end}p 打印从start行到第end行。其中 p 是打印,没有p则跳转。
:6t 把第6行复制到当前行下方。:t6 把当前行复制到第6行下方。
:{range}move{address} 移动,其中move可简写成m。
@: 重复上次Ex操作。
<C-d>自动补全
<C-w>s水平切割, <C-w>v 垂直切割。
:tabedit{filename} 打开新的标签页。{N}gt切换到编号为N的标签页,gt切换到上一个标签页,gT是下一个。:ls 可以查看当前缓存。:tabclose 当前标签页。
屏幕行:在hjkl前加g。
A 跳到当前行末尾并进入插入模式。I 跳转到行首并进入插入模式。
m{a-zA-Z} 对当前字符加mark标记, `{mark} 返回标记mark处。`` 回到上次跳转前的位置,`.回到上次修改的位置。
在输入的模式后加 \c ,表示忽略大小写, \C 表示区分大小写。
\v 开启very magic模式,即在正则表达式中默认说有特殊字符都有特殊含义。
:%s///gn 统计当前文档中的匹配个数。
:%s/old/new/gc 把old都替换为new,但是每次都会询问一遍。
顾名思义,这是一个自动补全插件,安装比较麻烦,需要自己编译,配置过程也极其折腾,然而很好用。
Vim自带的补全可以在插入模式下输入<C-p>或<C-n>触发。 <C-x><C-l><Esc>可以补全整行文本。
:set spell 即可高亮错误拼写,用 [s 和 ]s 前后跳转,当光标在拼错单词上时可以用 z= 来获得更正建议。
<C-p> 触发,可打开最近编辑的文件。
参考文献:[1] Drew Neil. Vim实用技巧[M]. 北京:人民邮电大学, 2014.