刘志龙

2017-07-02 15:48

vim进阶技巧

本文作者:IMWeb 刘志龙 原文出处:IMWeb社区 未经同意,禁止转载

都说vim是编辑器之神。

但是往往武器重要,用的人能驾驭才能把它发挥到极致,不然也就是个破铜烂铁。

vim时间也不短了,虽然离驾驭vim还差了十万八千里,但是也积累了不少实用好玩的小技巧~~

读文件

不知道经常用vim的同学有没有一个体验,经常会打开一个文件、复制内容、关闭文件、打开另一个文件、然后粘贴进去复制到内容。编辑器之神难道体验这么差?其实有更好的办法,那就是:

:read filename

一个简单的小技巧文件就读取进来啦!

缓冲区跳转

刚用vim的很长一段时间都对多文件编辑特别不习惯,知道后面明白自己忽略了缓冲区的作用。ctrl + ^ 是最常用的方式,来切换当前缓冲区和上一个缓冲区。这样非常方便来回编辑两个文件。缓冲区还提供了很多跳转命令:

:ls, :buffers      列出所有缓冲区
:bn[ext]            下一个缓冲区
:bp[revious]        上一个缓冲区
:b {number, expression}    跳转到指定缓冲区

:ls 然后输入编号是我常用的一种方式,可以快速跳转到对应文件。

搜索

简单的输入字符单文件搜索这里就不介绍了,想必用过vim的同学都知道。

如何快速对指定单词搜索?只需要将你的光标移到这个单词下然后按*就可以了,非常简单实用。

其次是多文件搜索,在vim下感觉很麻烦,其实不然。用vimgrep还是比较快捷的。

vimgrep /匹配模式/[g][j] 要搜索的文件/范围
g:表示是否把每一行的多个匹配结果都加入
j:表示是否搜索完后定位到第一个匹配位置

vimgrep /pattern/ %           在当前打开文件中查找
vimgrep /pattern/ *             在当前目录下查找所有
vimgrep /pattern/ **            在当前目录及子目录下查找所有
vimgrep /pattern/ *.c          查找当前目录下所有.c文件
vimgrep /pattern/ **/*         只查找子目录

cn                             查找下一个
cp                             查找上一个
cw                            打开quickfix

quickfix里面一样可以快捷的跳转。

区域选择

区域选择也是个非常常用的命令,其命令格式为

<action>a<object><action>i<object>
  • action可以是任何的命令,如 d (删除), y (拷贝), v (可以视模式选择)。
  • object 可能是: w 一个单词, W 一个以空格为分隔的单词, s 一个句字, p 一个段落。也可以是一个特别的字符:"、 '、 )、 }、 ]。

假设有一个字符串"andy",我们要把里面的andy删了然后改成zzzz,可以把光标移动到a,然后di"就把andy干掉啦,然后再输入zzzz!

宏录制

经过了上一次被轻易的干掉之后,andy怒了,他把自己隐藏在了文件的各个角落,看你还能轻易的干掉我?

13131 andy 11111111
aafsf  an aaaaaaaa andy
andy 111111

vim笑了笑,这点小事怎么难倒我,直接replace掉就完了。

但是这时候vim决定秀一波操作,掏出了一套宏录制大法。。大法上写着:

qa 把你的操作记录在寄存器 a。
@a 会replay被录制的宏。
@@ 是一个快捷键用来replay最新录制的宏。

宏录制有何用?在编辑某个文件的时候,可能会出现需要对某种特定的操作进行许多次的情况,这时候宏录制就用啦~~

看看怎么把上面每一行的andy干掉

光标定位第一行
qa 开始录制
/andy 查找andy  dw 删除andy (具体录制内容怎么写都是随便发挥的,这里只是举个例子)
q 停止录制
这样第一个andy被干掉了

然后2@@下面两个andy也被干掉了

宏录制在新入手vim应该很少会用到,但是却是进阶必须了解的一个知识~~

小结

编辑器之神的强大远非于此,只有你想不到,没有它做不到~~

1条评论

    您需要 注册 一个IMWeb账号或者 才能进行评论。