温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Vim实用技巧有哪些

发布时间:2022-01-04 18:44:39 来源:亿速云 阅读:148 作者:柒染 栏目:大数据

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实用技巧有哪些的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

vim
AI