原生Vim中的高效操作

原生Vim中的高效操作

Vim中有些按键能极大的提高幸福度,减少用脑,减少肌肉劳损,笔者用了一年Vim+vscode在这里小结下这段时间最常用的按键。(除了h,j,k,l等最常用最基本的)


一、用区间选择减少移动:i(in) 和 a(around)

区间选择,我最常用最喜欢的按键。需要和y,c,d搭配使用。尤其是当光标处于单词中间,要想delete这个单词,你可能会用bdw三个按键。先back到单词开始,再delete word,大脑要停顿一下,看光标位置再思考三个键。但有了inaround只要光标在单词范围内,按下diw即可。(或daw如果想删除空格)。

你可能不make sense,两方案都用了三个按键,只是少了用脑。但如果一段内容在<>,(),{}当中,就需要来到开始位置切换到visual模式控制光标选择括号中的内容… bla~bla,烦死了。但现在有了i),只要ci)di)yi)就能直接修改,删除,复制整个()里的内容,对于a也是相似的。

举一个模板的例子:

template <typename T, typename U>

如果没有i>,需要移动到开始位置然后用t去选择,浪费了脑力和肌肉。现在只要yi>就能复制typename T, typename U
进一步,想连同复制<>,ya>ya<就能复制整个<typename T, typename U>
前提是光标在<>之间。

再举一个代码块的例子:

{
	if (loopInBlock >= MAX_LOOP_IN_BLOCK)
	{
		raise("It is max loop now");
	}
}

可以用ya}复制整个代码块,只要光标在代码块中,vim会自动匹配括号的层次。(注意为character-wise)

二、快捷键查找光标下关键字:#*

笔者曾经总用/输入很长的字符串查找,但自从知道了#*就很少直接输入字符串了。#意思是向上查找当前光标下的word*则是向上查找。也可以配合n重复上次查找和N反向重复上次查找。

三、迅速找到类名:[{]}

试想有一个很长的类,好几百行,屏幕放不下。光标在类当中,想迅速跳转到类的名字看看父类是什么,那就要用{[,意思是跳转到最近的匹配的{

四、指定位置插入:AICS

这四个键太喜欢了,效率非常高,C最常用。意思是:
A转到行尾并插入,I转到行首并插入,C删除到行尾并插入,S删除行并插入。
不知道这四个键,那只有:$a,0i,c$,ddO,多了脑力和手指移动。

五、覆盖粘贴当前单词 viwp

如果刚开始用vim不久,可能想怎么replace一个单词,可能要先daw删除当前单词,然后看一下要粘贴的内容在哪个寄存器(daw改变了寄存器),然后p"1粘贴。(好烦)
一旦进入visual模式,replace就方便很多。按v进入visual,iw选中单词,然后p黏贴就好了。

六、多行插入相同内容:数字+o

写一个enum类,他们的前缀可能是一样的,可能要不停的黏贴黏贴…有了多行插入只需要数字+o输入完毕后ESC就能发现内容重复了多行。(实际上是重复了多次命令)

七、跳转到上次位置:ctrl-octrl-i

跳转到上次阅读代码的位置,非常常用。ctrl-o跳转到上次位置,ctrl-i返回

八、快速复制寄存器内容到命令行:ctrl-r + "

常用,尤其是配合/查找%s字符串替换,:find查找文件。ctrl-r之后通过"选择寄存器,将寄存器的内容yank到命令行中。

九、命令行查找历史命令:ctrl-f

常用于查找debug print, 输入了多个命令,通过ctrl-f会产生历史命令的quickfix。

笔者由于是vscode+vim的混合环境,所以一般只用vim编辑,不在project层次使用,因此这些按键在这种程度上就够用了。有更好的按键和使用情景欢迎分享~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值