vim命令理解和记忆

本文适合vim编辑器爱好者阅读。
本文包括vim大部分实用操作,加深理解和记忆的方法。

绪论

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

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

一、移动篇

上下左右:hjkl

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

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

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

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

翻页:ctrl+fctrl+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 0d ^

删除到下一个空格包括空格: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/

六、复制粘贴篇

复制一行:yyY。复制n行:nyy

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

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

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

字母大小写切换:~

七、块模式篇

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

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

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

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

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

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

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

八、写代码篇

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

自动补全:ctrl+pctrl+n

自动对齐n行:n==

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

跳转到上一个{:[{

跳转到下一个}:]}

找到与之匹配的括号:%

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

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

自动补全ctrl+pctrl+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插件,完善函数跳转。

最终附上我常用的vim配置文件 vim配置文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值