本文适合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插件,完善函数跳转。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。