###删除单词块
假设有一个函数声明如下:
void anExampleOfAVeryLongFunctionName(int a, char b, int *c);
如果你想再声明五个类似的函数,他们的参数类型和返回类型都相同,一般的做法是将这个函数声明拷贝5次,
然后逐个删除每个函数声明的名称并添加新的函数名称。你可以使用diw
or ciw
命令一次删除整个函数名称,
这样会比使用backspace
键快得多。注意,diw
仅仅删除一个单词,而ciw
是删除整个单词并且进入insert
模式。
###删除小括号(),大括号{},引号""内的字符
像上面的例子一样,但是这次你想声明的函数只是参数类型不一致,所以你需要删除小括号里面的所有参数,这
时候你可以使用di
后者ci
命令来达到这个目的。同样di
和ci
的区别是ci
会进入insert`模式。
###在vim编辑器中执行shell命令
你可以这样执行一个linux命令:
:! cmd
比如你要执行ls命令,可以这样做::! ls
如果你要复制这个命令的输出到你当前编辑的文件,那么你可以这样做:
:.! cmd
如果你要将输出的内容复制到指定的行,可以这样做:
:3! cmd
3为行号
###为文本字符串创建缩写
如果你在调试程序的时候,需要添加很多打印信息,这个时候你需要打印很多printf或者console.log,这个时候
你可以为这些字符串创建缩写以节省打字的时间,比如为printf创建缩写:
:ab pf printf
这时候你在编辑模式下打出pf,然后按一下空格就可以打出printf了。然而这样的设置在vim退出以后就会失效,
如果想长期使用这个缩写,可以将上面的命令添加到/etc/vim/vimrc
即可。如果想去掉某个缩写,使用下面的命令:
:unab abbreviation
###拷贝大量文本
有时候我们需要拷贝或者删除很多行的文本,我们可以在visual模式下轻松做到,首先按v
进入visual模式,使用上
下键选择你需要复制或者删除的内容,然后按yy
或者dd
就可以完成复制或者删除了。
###其他技巧
-
使用
=
对齐当前行,使用=G
光标以后所有行,使用gg=G
对齐整个文件。可以使用:set shiftwidth=numberOfSpaces
设置对齐的宽度。 -
使用
:%!xxd
是编辑器进入十六进制编辑模式,:%!xxd -r
做相反操作。 -
使用
:w !sudo tee %
代替sudo保存文件。