都说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>
假设有一个字符串"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
应该很少会用到,但是却是进阶必须了解的一个知识~~
编辑器之神的强大远非于此,只有你想不到,没有它做不到~~