新闻资讯

新闻资讯 行业动态

vim命令理解和记忆

编辑:006     时间:2020-02-08
本文适合vim编辑器爱好者阅读。
本文包括vim大部分实用操作,加深理解和记忆的方法。
绪论

首先使用vim需要摒弃一个不好的习惯就是需要输入大写字母非要切换非要用CapsLk,其实shift+字母就是大写。因为vim中有很多的快捷键是大写字母,如果使用前者的方式需要按三次键盘,而后者的方式只需要一次。

vim的使用致力于双手可以放在键盘上,不需要抬起来拿鼠标。
一、移动篇

上下左右:hjkl。

移动到单词开头:b。移动到上一个空格之后B。B比b好用。

移动到单词结尾:e。移动到下一个空格之前E。E比e好用。

移动到下一个单词开头w。移动到下一个空格后面W。W比w好用。

行首(第一个可见字符):^,行尾:$,行的第一列0。

翻页:ctrl+f,ctrl+b。

移动到n行::n。

全文首:gg,全文尾G。
二、查找篇

全篇向下查找字符串string:/string。在配合n向下,N向上查找。#等价于/光标所在单词。

全篇向上查找字符串string:?string。在配合n向上,N向下查找。*等价于/光标所在单词。

跳转到本行下一个字符char:f char。

跳转到本行上一个字符char:F char。

跳转到本行下一个字符char之前:t char。

跳转到本行上一个字符char之前:T char。
三、插入篇

光标前插入:i。

跳转到行首插入:I,等价与^ i。

光标后插入:a。

跳转到行尾插入:A,等价于$ a。

下一行插入:o,等价于A return。

上一行插入:O,等价于I return 上(esc k i)。

列插入:ctrl+v 上下移动光标 I 要输入的内容 esc。
四、删除篇

删除光标处字母:x。删除光标前的字母:X。

删除一个单词包括它后面的空格:daw。删除一个单词不包括它后面的空格:diw。

删除括号()或[]或{}中且包含括号的内容:da(或[或{。

删除括号()或[]或{}中不包含括号的内容:di(或[或{。

删除引号'或"中且包含引号的内容:da'或"。

删除引号'或"中不包含引号的内容:di'或",

删除整行:dd。删除n行:ndd。

删除本行光标后的内容:D。删除本行光标前的内容d 0或d ^。

删除到下一个空格包括空格:d W。(没有特殊字符时小写也可以)

删除到下一个空格不包括空格:d E。(没有特殊字符时小写也可以)

删除到上一个空格不包括空格:d B。(没有特殊字符时小写也可以)

列删除:ctrl+v 移动光标选中待删除部分 d。
五、替换篇

替换其实就是删除并插入。

删除当前字母并进入插入模式:s,等价于x i。

删除当前行并进入插入模式:S,等价于dd O。

删除篇d所有的操作用c来替代,相当于删除后直接进入插入模式,c相当于dxx a。

全文替换::%s/old string/new string/。

n到m行替换::n,ms/old string/new string/。
六、复制粘贴篇

复制一行:yy或Y。复制n行:nyy。

删除篇d所有操作用y来代替,代表复制相应的内容。比如yaw就是复制单词、yi"就是复制两个”之间的内容。

在光标之后粘贴:p。在光标之前粘贴:P。

其实p粘贴的内容是从vim无名寄存器中取出来的,删除操作和复制操作都会将内容存入无名寄存器,所以刚删除的内容是可以用p粘贴出来的,d和p像是剪切和粘贴,y和p像是复制和粘贴。

字母大小写切换:~。
七、块模式篇

块模式是用来选中需要操作的部分,具体执行什么操作还要看后面跟随的具体命令。

快速选中:用v替换删除篇的d,用来快速选中相对应的部分。

常见操作:yaw复制一个单词,再移动光标到另一处单词,vawp用复制的单词替换当前单词,vaw代表快速选中单词,p再进行粘贴。将单词全部转化成大写viwU,小写是viwu。

普通块模式:ctrl+v,进入块模式移动光标可以选中需要操作的部分。

常见操作:列插入列删除。

行模式:V,通过上下移动选中多行。

常见操作:多行删除V 移动光标 d和复制V 移动光标 y,用ndd或者nyy需要数多少行,用V可以所见即所得。
八、写代码篇

向前撤销:u,向后撤销:ctrl+R。

自动补全:ctrl+p和ctrl+n。

自动对齐n行:n==。

向左缩进:<<。向右缩进:>>。

跳转到上一个{:[{。

跳转到下一个}:]}。

找到与之匹配的括号:%。

跳转函数定义:ctrl+]。跳回:ctrl+t。

跳转光标上一次的位置:ctrl+o。下一次:ctrl+i。

自动补全ctrl+p和ctrl+n。
九、文件篇

保存::w。

保存退出::wq。

不保存退出::q。

左右分割打开其他文件::vsp filename。

上下分割打开其他文件::sp filename。

两个文件差异比较:vimdiff filename1 filename2。
十、设置篇

显示行号::set nu,不显示行号:set nonu。

设置tab的宽度为n::set ts=n。

设置缩进宽度为n::set sw=n。

用空格替换tab::set expandtab,反之::set noexpandtab。

在行开始时使用制表符::set smarttab。

查找忽略大小写::set ignorecase 。

从外面粘贴代码缩进会出现问题::set paste。复制完成后在::set nopaste。这一点粘贴python尤为重要。

可以在~/.vimrc文件来提前配置vim。
十一、理解篇

一些操作,如:d/y/c,像是一个及物动词(谓语)一样,后面可以跟它的宾语,如:w/(/',这些宾语可以有他们的定语,如:i/a。这些都可以自由的组合。

一些操作,如:p/o,像是一个不及物动词一样,i/a也可以是不及物动词。

宾语(待操作的对象)也可以通过块模式选取。比如:列删除操作、vi(d删除()之间的内容。
十二、升级篇

vim还有很多强大的功能,笔者目前用的不多。比如:做标记m和标记跳转`,有名的寄存器操作"寄存器名,录入命令集合q名字xxxq,取出命令集合@名字。

如果写c/c++可以将vim插件安装到clion中使用,写代码不要太爽。
linux中还可以安装ctags和escope插件,完善函数跳转。


郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

回复列表

相关推荐