Vim实用技巧有哪些


Vim实用技巧有哪些,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、Vim解决问题的方式A.结识.命令1..命令可以让我们重复上次的修改,它是vim中最为强大的多面手2..命令是一个很小的宏(macro)B.不要自我重复1.$移动到行尾2.a命令在当前光标之后添加内容3.A命令在当前行的结尾添加内容,相当于$aC.以退为近1.f{char}让vim查找下一处指定字符出现的位置2.;命令重复查找上次f命令所查找的字符D.执行、重复、回退1.vim会记住我们的操作,并使最常用的操作触手可及,可以很方便地重复执行它们2.u键撤销上次的修改3.,键反射查找上次f{char}所查找的字符E.查找并手动替换1.*进行查找,一是光标会跳到下一个匹配项上,二是所有出现这个词的地方都会被高亮显示出来。如果没有高亮,运行:set hls2.cw命令删除从光标位置到音讯结尾间的字符,并进入插入模式3.n会查找下一个单词,*nn会遍历所有匹配项,从而跳回到本次查找的起点F.结识.范式1.理想模式:用一键移动,另一键执行二、普通模式A.把撤销单元切成块1.在vim中,我们可以自己控制撤销命令的粒度。从进入插入模式开始,走到返回普通模式为止,在此期间输入或删除的任何内容都被当成一次修改。2.在插入模式中使用up/down/left/right会重置修改状态B.构造可重复的修改1.db命令删除从光标起始位置到单词开头的内容,但会原封不动地留下最后一个字符2.x删除当前字符3.b把光标移到单词的开头4.dw命令删掉整个单词5.daw删除整个单词及相关联的空格C.用次数做简单的算术运算1.yyp复制行,cw修改字符2.c+x,找到第一数字做减法,c+a找到第一个数字做加法3.vim会把0开头的数字当成8进制,set nrformats=,把所有数字当成十进制D.能够重复,就别用次数1.操作符+动作命令=操作d{motion},可以dl、daw或dap,它作用的范围由动作命令决定,c{motion}、y{motion}以及其他一些命令也类似,被统称为操作符(operator)
一个操作符被连续调用两次时,会作用于当前行。如dd、>>,gu例外,使用guu,全部小写
三、插入模式A.在插入模式中可即时更正错误1.c+h删除前一个字符,c+w删除前一个单词,c+u删除至行首B.返回普通模式1.esc、c+[切换到普通模式,c+o切换到插入-普通模式,可以执行一个普通命令C.不离开插入模式,粘贴寄存器中的文本1.yt,复制到逗号的文本2.c+r{register},把复制的文本粘贴到光标处,{register}是想要插入的寄存器的名字3.{register}按原义插入寄存器内的文本,并修正任何不必要的缩进D.随时随地做运算1.=E.用字符编码插入非常用字符1.{code},{code}是要插入字符的编码2.{char1}{char2},插入以二合字母表示的字符F.用替换模式替换已有文本1.R命令可以由普通模式进入替换模式2.gR虚拟替换模式(Virtual Replace mode)3.单次版本的替换模式,r{char}和gr{char}四、可视模式A.选择高亮选区1.v激活面向字符的可视模式,V激活面向行的可视模式,激活面向列块的可视模式,gv重选上次的高亮选区B.只要可能,最好用操作符命令,而不是可视命令1.vit命令可被解读 为高亮选中标签内部的内容(visually select inside the tag)2.当一条可视模式命令被重复执行时,它会影响相同数量的文本C.用面向列块的可视模式编辑表格数据1.进入列块可视模式2.i,a在光标处字符前后插入,I,A在行首和行尾插入五、命令行模式A.在一行或多个连续行上执行命令1.:[range]p,显示并定位到行,可以混合搭配行号、位置标记以及查找模式,也可以对它们加以偏移B.使用’:t’和’:m’命令复制和移动行1.:[range]copy{address},把[range]的行复制到{address},{address}为.复制到当前行下方,为空复制到[range]下方2.简写:co或:t,yyp命令会使用寄存器,:t不会3.:[range]move{address},简写:m,移动行C.在指定范围上执行普通模式命令1.:’normal,为“对高亮选区中的每一行,对其执行普通模式下的命令”2.%代表下个文件范围D.重复上次的Ex命令1.使用@:重复上次一命令,运行运一次后就可以用@@2.寄存器总是保存着最后执行的命令行命令E.自动补全Ex命令1.也可以使用自动补全2.显示可用的补全列表F.回溯历史命令1.可以使用代替上下键,可以使用q:显示命令行窗口2.在命令行模式下可以使用切换到命令行窗口中G.运行shell命令1.:!{cmd}各用于执行一次命令,:shell启动一个交互的shell会话2.挂起Vim,fg唤醒六、管理多个文件A.用缓冲区列表管理打开的文件1.:ls显示所有载入内存中的缓冲区列表,:bnext可以切换到下一个缓冲区2.:bprev和:bnext在列表中反向或正向移动;:bfirst和:blast分别跳到列表的开头和结尾;使用:buffer {bufname|N}直接跳转;:bufdo允许在:ls列出的所有缓冲区上执行Ex命令;3.:bdelete命令删除缓冲区,只是简单地把该文件在内存中的映像删掉B.用参数列表将缓冲区分组1.:args输出记录在启动时作为参数传递给Vim的文件列表2.:qall!不对未保存的修改进行检查;:wall把所有改变的缓冲区写入硬盘C.将工作区切分成窗口1.s,v,水平和垂直切分2.w循环切换窗口3.:close关闭当前活动窗口,:only关闭除当前活动窗口以外的窗口D.用标签页将窗口分组1.:lock{path}可以设置当前窗口的本地工作目录;:tabedit {filename}可以撕开一个新的标签页;2.{N}gt命令在标签页间切换,“跳到标签页{N}”;gT功能反向;3.用:tabmove [N]可以重排列标签页七、打开及保存文件A.用:edit命令打开文件1.:pwd查看当前工作目录2.:edit {filename}打开指定文件3.%:h,%代表活动缓冲区的完整路径,:h修饰符会去除文件名但保留路径中的其他部分B.使用:find撕开文件1.**通配会会匹配目录下所有子目录2.:et path=,指定目录C.使用netrw管理文件系统1.vim .可以查看当前目录,回车可以打开文件2.:edit缩写:e3.:Explore(:E)打开文件管理器,并显示活动缓冲区所在的目录3.:Sexplore及:Vexplore,在一个再来水平切分窗口及垂直切分窗口打开文件管理器D.把文件保存到不存在的目录中1.显示当前文件的文件名及状态2.!make dir来进行补救八、用动作命令在文档中移动A.让手指保持在本位行上1.h左移一列,l右移一列,j下移一行,k上移一行2.只用h和l来解决“差一错误”(off-by-one errors)。也就是说,只有在距目标差一两个字符时,才用这两个键。B.区分实际行与屏幕行1.gj、gk向下、向上移动一个屏幕行2.g0、g^、g$,移动到屏幕行的行首、第一个非空白字符、行尾C.基于单词移动1.w正向移动到下一单词的开头,b反向移动到当前单词/上一单词的开头,e下向移动到当前 单词/下一单词的结尾,ge反向移动到上一单词的结尾D.对字符进行查找1.f{char}命令会在光标位置与当前行行尾之间查找指定的字符,如果找到了就会把光标移到此字符上;如果未能找到,则保持光标不动2.;命令重复f{char}命令,,反向重复F{char}命令3.t{char},T{char}正/反向移动到下一个{char}所在之处的前一个字符上E.通过查找进行移动1./{char}查找命令2.n下移,N上移F.用精确的文本对象选择选区1.Vim的文本对象由两个字符组成,第一个字符永远是i或是a。以i开头的文本对象会选择分隔符内部的文本,而以a开头的文本对象则会选择包括分隔符在内的整个文本。a)或ab,一对圆括号
i)或ib,圆括号内部
a}或aB,一对花括号
i}或iB,花括号内部
a],一对方括号
i],方括号内部
a>,i>,a’,i’,a”,i”,a`,I`,at(一对xml标签),it(xml标签内部)
2.每当在命令语法里看到{motion}时,你也可以在这个地方使用文本对象,常见的例子包括d{motion}、c{motion}和y{motion}G.删除周边,修改内部1.iw当前单词,aw当前单词及一个空格,iW当前字串,aW当前字串及一个空格,is当前句子,as当前句子及一个空格,ip当前段落,ap当前段落及一个空行2.一般来说,d{motion}命令和aw、as和ap配合起来使用比较好,而c{motion}命令和iw及类似的文本对象一起用效果会更好H.设置位置标记,以便快速跳回1.m{a-zA-Z}命令会用先定 香港云主机的字母标记当前光标所在位置,小写位置标记只在每个缓冲区里局部可见,而大写位置标记则全局可见2.`{mark}命令跳到位置标记所在行,并把光标置于该行第一个非空白字符上3.自动标记位置:“当前文件中上次跳转动作之前的位置,`.上次修改的地方,`^上次插入的地方,`[上次修改或复制的起始位置,`]上次修改或复制的结束位置,`上次高亮选区的结束位置I.在匹配括号间跳转1.%命令允许我们在一组开、闭括号间跳转,可作用于()、{}以及[]九、在文件间跳转A.遍历跳转列表1.:jumps查看跳转列表2.命令,前进或后退跳转B.遍历改变列表1.:changes可以查看改变列表C.跳转到光标下的文件1.gf命令打开文件2.:set suffixesadd+=..指定打开文件的扩展名3.:setpath设置目录十、复制与粘贴A.深入理解Vim寄存器1.可以使用”{register}来指定寄存器名2.黑洞寄存大贵,用下划线”_B.用寄存器中的内容替换高亮选区的文本1.在可视模式下使用p命令时,Vim将用我们指定的寄存器内容来替换高亮选区中的文本十一、宏A.宏的读取与执行1.q{register}录制及结束2.reg {register}可以查看宏3.使用@{register}执行指定宏的内容,也可以使用@@来重复最近调用过的宏B.规范光标位置、直达目标以及中止宏1.在录制一个宏时,要确保每条命令都可被重复执行2.规范光标的位置、用可重复的动作命令直达目标、当动作命令失败时,宏将中止执行C.加次数回放宏1.{number}@qD.给宏追加命令1.使用qA,大写的{register}即可追加十二、按模式匹配及按原义匹配A.调整查找模式的大小写敏感性1.使用元字符c和C,可以覆盖Vim缺省的大小写敏感设置。B.按正则表达式查找时,使用v模式开头1.v模式开关使得Vim的正则表达式引擎表现得更像是Perl、Python或者Ruby。C.按原义查找文本时,使用V原义开关D.使用括号捕获子匹配十三、查找A.结识查找命令1./正向查找,?反向查找2.n跳转到下一处,N跳转到上一处B.高亮查找匹配1.:set hlsearch高亮,:set nohlsearch不高亮C.在执行查找前预览第一处匹配1.:set incsearch预览第一处匹配D.将光标偏移到查找匹配的结尾1./{search}/e十四、替换A.结识substitutedtute命令1.:[range]s[ubstitute]/{pattern}/{string}/[flags]十五、global命令A.结识global命令1.:[range]global[!]/{pattern}/[cmd]看完上述内容,你们掌握Vim实用技巧有哪些的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注开发云行业资讯频道,感谢各位的阅读!

相关推荐: Flume基础用法和Kafka集成是什么

本篇内容介绍了“Flume基础用法和Kafka集成是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Flume是Cloudera提供的一个高可用的,高可靠的,…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 10/17 11:34
下一篇 10/17 11:35

相关推荐