vim使用技巧

命令模式应该是常态

在vim中,保存:w,需要在命令模式下进行。Esc切换到命令模式。只要不输入文字,就切换到命令模式,命令模式是常态!

HJKL光标上下左右移动

vim的大部分快捷键在命令模式下完成,而且HJKL也是在命令模式下才生效的。如果你在插入模式下工作,不用HJKL。

让你的操作可重复

假设如下文本

one two three four five six    我希望改成      "one","two","four","five","six"

1. 首先使用^光标定位在该行的行首。然后键入f␣(␣表示空格)把光标定位在one和two之间的空格处,然后键入c␣","(修改空格,进入插入模式,然后增加","):

one","two three four five six

2. 接着按;.,光标将先查找下一个空格,即重复f␣,这个空格位于two和three之间,然后.可以重复上一次的修改操作,即c␣","

one","two","three four five six   重复按若干次;.完成所有中间字符的修改:one","two","three","four","five","six

3. 最后应用IA,添加开始和最后的双引号就可以了。

如果上面的例子,我们用l或者->来定位空格的话,由于one、two、three这些单词的长度是不确定的,我们无法事先知道需要按多少次l,所以l定位是不可重复的。而通过f可以重复我们的查找操作,从而精确的定位到空格。另外,如果我们通过xi","代替c␣","也是不可重复的,因为xi","表示先删除空格,然后进入插入模式后键入",",这样就是两次分开的修改操作,而最近的操作变成了“进入插入模式后键入","”,如果通过.重复这个操作,是无法删除空格的。

尽量多用fcr是不错的选择。利用AaoO来进入插入模式,而不是每次通过i进入插入模式。

高效移动

set relativenumber(显示相对行号),比set number显示行号更好用。行号的显示会根据当前的光标的相对位置显示成偏移数,并动态变化。这个好处是,可以利用数字+j 数字+k来进行多行跳转,胜过gg

  • web:按照单词进行前后光标跳转,也可以组合数字进行跳转,不过以我的经验,与其去算要跳多少个单词,不如多按几次吧。

  • IA:移动到行首或行末的第一个字符处,并进入插入模式。

  • HML:光标分别跳转到可视区域的最上面、中间、最下面。

  • Ctrl+DCtrl+U:有时,需要看的文本不在可视区域,通过这些组合进行上下翻页。

  • ^$0:光标移动到行首和行尾(0是绝对行首)。不过因为^$都需要同时按住shift,而且数字键我们往往难以盲打,所以我一般直接使用I+EscA+Esc

  • %:移动到与当前括号匹配的括号处。

  • gjgk:有时可视区域不够宽,而一行的字符有很多,导致了wrap。那么通过jk是无法直观的定位到同一物理行,却不在同一个可视行里的位置,此时需要gjgk

  • fF:通过上面的例子,我们知道,f是find的意思,可以在一行内查找某个字符出现的位置,并直接跳转过去。比如f<可以从当前光标开始向右,找到第一个<,并移动过去。F是向左查找。

  • ;:重复上一次的f查找操作

  • .:重复上一次的修改操作,跟;可以说是好基友,经常用来实现一些简单的重复操作,比录制宏要简单很多。经常有意识的使用这种简单重复,是vimer编辑思路进阶的分水岭。

高效修改

切忌提到修改就按i。有很多高效的修改办法,而且这些办法往往是可重复的。例子:

  • r:替换模式,替换当前光标所在位置的一个字符。虽然你同样可以i进入插入模式,然后删掉那个字符,再输入需要的字符,但这种操作是鼠标流思维方式。替换是一个可重复操作,多用没坏处。

  • cwchange word可以删除从当前位置到一个单词的结尾,并进入插入模式。这种操作常用于修改一个变量。比如对于:int count=0;希望把count改成cnt,那么当光标位于c字符处的时候,按cw可直接删除count,并进入插入模式。然后直接继续输入cnt即可。

  • cawchange a word可以删除当前光标所在位置的单词。对于int count=0;的例子,如果此时光标在count中间某处,比如u处,直接键入caw可以达到同样的效果。所以caw更强大一些。

  • c$c^:举一反三,可以猜到c$是从当前位置删除到行尾,并进入插入模式。

  • ci"change inside "可以用于修改当前位置附近,在相同配对的"中的内容。比如对于const char *str="hello world";。当在双引号中间的任意位置键入ci"可以直接清空字符串,并继续输入新的希望的字符串。

  • ci(ci[:举一反三change inside ( change inside [

  • cit:这个比较特殊,可以直接编辑匹配的xml标签中的内容!经常编写html的童鞋可以熟悉一下。

  • yi"yank inside " 猜猜是啥意思?类似ci"只是把编辑操作编程复制操作,因为y是复制!是不是很强大。

  • ya"yank around " 复制整个字符串,包括双引号。

  • ywyawdawd$...:好了,这些可以"发明"出来了。

  • oO:向下向上增加空行

  • uCtrl+r:undo和redo

上面的例子体现了vim组合的思想,很多命令可以通过组合得到不同的效果。

Visual模式是鼠标流后遗症,不过也有妙用

vVCtrl+v是Visual模式,类似用鼠标选中一些文本。我在早期使用vim时候,十分喜欢用v,比如要删除一个单词,我往往会用vwd,试图用vw选中一个单词,然后d删除。这种方式明显是鼠标流的后遗症。直到我学会上面介绍的一些技巧后,v已经很少用了。不过Ctrl+vBlock Visual模式,类似选中列,这个技巧有时很有用。比如有如下文本:

one
two
three
four

希望变成    "one, two, three, four"

首先将光标定位到one的o处,Ctrl+v3j$A,EscV3jJ。这一套连招下来,出来了:

onetwothreefour,

如果要合的行数很多,就比较有优势了。问我怎么知道按3j,上文提到的set relativenumber帮到你。

总结

在开发效率上,不敢说vim优于IDE,不过vim的编辑和修改速度是比鼠标快的。使用vim的过程就是自我否定和自动重塑的过程,如果你不断的学习技巧的话,编辑习惯会一再被推翻,一再重塑。不断有新的理解注入到日常的工作中。最终会形成自己编辑风格。

Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值