Vim实用技巧有哪些,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
一、Vim解决问题的方式
A.结识.命令
1..命令可以让我们重复上次的修改,它是vim中最为强大的多面手
2..命令是一个很小的宏(macro)
B.不要自我重复
1.$移动到行尾
2.a命令在当前光标之后添加内容
3.A命令在当前行的结尾添加内容,相当于$a
C.以退为近
1.f{char}让vim查找下一处指定字符出现的位置
2.;命令重复查找上次f命令所查找的字符
D.执行、重复、回退
1.vim会记住我们的操作,并使最常用的操作触手可及,可以很方便地重复执行它们
2.u键撤销上次的修改
3.,键反射查找上次f{char}所查找的字符
E.查找并手动替换
1.*进行查找,一是光标会跳到下一个匹配项上,二是所有出现这个词的地方都会被高亮显示出来。如果没有高亮,运行:set hls
2.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.<c+r><c+p>{register}按原义插入寄存器内的文本,并修正任何不必要的缩进
D.随时随地做运算
1.<c+r>=
E.用字符编码插入非常用字符
1.<c+v>{code},{code}是要插入字符的编码
2.<c+k>{char1}{char2},插入以二合字母表示的字符
F.用替换模式替换已有文本
1.R命令可以由普通模式进入替换模式
2.gR虚拟替换模式(Virtual Replace mode)
3.单次版本的替换模式,r{char}和gr{char}
四、可视模式
A.选择高亮选区
1.v激活面向字符的可视模式,V激活面向行的可视模式,<c+v>激活面向列块的可视模式,gv重选上次的高亮选区
B.只要可能,最好用操作符命令,而不是可视命令
1.vit命令可被解读 为高亮选中标签内部的内容(visually select inside the tag)
2.当一条可视模式命令被重复执行时,它会影响相同数量的文本
C.用面向列块的可视模式编辑表格数据
1.<c+v>进入列块可视模式
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.也可以使用<Tab>自动补全
2.<c+d>显示可用的补全列表
F.回溯历史命令
1.可以使用<c+p>、<c+n>代替上下键,可以使用q:显示命令行窗口
2.在命令行模式下可以使用<c+f>切换到命令行窗口中
G.运行shell命令
1.:!{cmd}各用于执行一次命令,:shell启动一个交互的shell会话
2.<c+z>挂起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.<c+w>s,<c+w>v,水平和垂直切分
2.<c+w>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缩写:e
3.:Explore(:E)打开文件管理器,并显示活动缓冲区所在的目录
3.:Sexplore及:Vexplore,在一个再来水平切分窗口及垂直切分窗口打开文件管理器
D.把文件保存到不存在的目录中
1.<c+g>显示当前文件的文件名及状态
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}<CR>查找命令
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.<C-o>、<C-i>命令,前进或后退跳转
B.遍历改变列表
1.:changes可以查看改变列表
C.跳转到光标下的文件
1.gf命令打开文件
2.:set suffixesadd+=..指定打开文件的扩展名
3.:set path设置目录
十、复制与粘贴
A.深入理解Vim寄存器
1.可以使用”{register}来指定寄存器名
2.黑洞寄存大贵,用下划线”_
B.用寄存器中的内容替换高亮选区的文本
1.在可视模式下使用p命令时,Vim将用我们指定的寄存器内容来替换高亮选区中的文本
十一、宏
A.宏的读取与执行
1.q{register}录制及结束
2.reg {register}可以查看宏
3.使用@{register}执行指定宏的内容,也可以使用@@来重复最近调用过的宏
B.规范光标位置、直达目标以及中止宏
1.在录制一个宏时,要确保每条命令都可被重复执行
2.规范光标的位置、用可重复的动作命令直达目标、当动作命令失败时,宏将中止执行
C.加次数回放宏
1.{number}@q
D.给宏追加命令
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实用技巧有哪些的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。