Appearance
Vim使用记录
推荐直接看书《Vim实用技巧》。Vim里面的高级用法真的是太多了,根本学不完。 只能在慢慢的实践中记忆了。用好了确实能达到事半功倍的效果。然而人的记忆力是有限的。 我只能说,Vim很强大,是我不配。
文件编码相关
:set ff?查看当前编码。:set ff=unix或:set fileformat=dos在LF和CRLF之间切换。:set fileencoding?查看当前文件的编码。:set fileencoding=utf-8设置文件的编码。
复制粘贴
"+y或"*y使用系统剪切板(可能要依据情况),使用p时同理。 一般来说mac和windows只有一个剪切板,理论上+和*是相同的。 而在一般的X11中,"+代表了CLIPBOARD,即Ctrl+C时使用的剪切板。"*代表了Star is Select,即选择时复制所使用的剪切板。但我测下来也不绝对。 还是要根据自己的具体情况来使用。一般来说用+应该没问题。
重复性工作相关技巧
- vim中的
.命令是一个微型的宏,可以记录上一个esc到目前为止所做的工作流程。 - 使用
:normal命令可以在一系列连续行上执行一条普通模式命令,此命令在与.命令 或者宏使用时只需花费很少的努力就能完成大量重复性任务。
例如,用ggVG选中全文所有内容,然后:%normal i#给全文加上注释。
:%normal A;给全文的行尾加上分号。另一种方法是使用<Ctrl+v>进入块可视化模式。 然后用jj$跳到所有的行尾,然后使用A;插入分号。
使用
*命令可以快速搜索当前单词,跳转操作与用/搜索一样。实用
>和<可以控制缩进,但是要进入可视化模式。比如vG。通过寄存器录制命令也是一个好方法,比如临时录制一些操作,可以用在normal模式下,用
q加上寄存器名,如qa然后录制你的命令,再次按下q结束录制。调用该命令时使用@加上寄存器名,如@a,也可以重复多次,如6@a
寄存器
Vim 提供了 10 类寄存器,可在 Vim 中通过 :help registers 查看帮助。
- 匿名寄存器
"" - 编号寄存器
"0到"9 - 小删除寄存器
"- - 26 个命名寄存器
"a到"z - 3 个只读寄存器
":,".,"% - Buffer 交替文件寄存器
"# - 表达式寄存器
"= - 选区和拖放寄存器
"*,"+,"~ - 黑洞寄存器
"_ - 搜索模式寄存器
"/
编号寄存器从 "0 到 "9 共 10 个,其中 "0 保存着拷贝来的字符串,"1 到 "9 保存着删除掉的字符串。 删除操作符包括 s, c, d, x。 删除掉的字符串会被存到 "1 中,上次删除的则会被存到 "2 中。以此类推,Vim 会保存你最近的 9 次删除。
命名寄存器有 "a 到 "z 共 26 个,这些寄存器只有当我们指定时才会被使用。 其实我们在录制宏时,所有键盘操作会以字符串的形式存到寄存器中。 例如录制一个宏存到 "a 寄存器中,内容为更改当前行 cc,改为 foo 字符串:
qaccfoo然后执行 :reg 来查看寄存器,可以发现 a 寄存器的值是 ccfoo。
小技巧:当使用小写字母进行操作时会覆盖当前寄存器内容,当使用大写字母进行操作时,会追加当前寄存器内容。
快速移动技巧
- vim中区分屏幕行和实际行,如果要在屏幕行上移动的话在命令前加个
g就可以了。比如说gj,gk。 - 使用
^可以移动到行前第一个非空白字符。 - 多使用
f{char}命令。这应该是Vim中最快的移动方式之一。要跳多次只需要结合;一起使用就可以了。 如果不小心跳过头了可以用,再跳回来。F{char}则是反向查找。
一些冷知识
<Ctrl+[>的功能和<ESC>是相同的。都是切换到普通模式。- 在插入模式下,使用
<Ctrl+w>可以删除前一个单词,使用<Ctrl+u>可以删除至行首。(然而对中文来说并没有那么好用) - 在插入模式下粘贴寄存器中的内容
<Ctrl+r>{register},其中,{register}是寄存器的名字。
