vim基本认识
vim是一种多模式的编辑器,它是vi的升级版本,它兼容vi所有的指令并加入了一些新的特性在里面。vi是一个老式的文本编辑器,功能相当齐全,vim则是在vi之上更进了一步,拥有代码补全、编译及错误跳转等功能,被称为编辑器之神,就连vim的官网自己也说vim是一个程序开发工具而不是一个文字处理软件。
vim拥有多种模式,每种模式的用法各不相同,每种模式之间可以进行切换。而我们最常用的有3-5种模式:命令模式(我们vim打开文件就是这个模式,也叫正常模式、普通模式)、插入模式(输入模式)、末行模式(底行模式)、替换模式、可视化模式。
vim常用模式
命令模式:
用户一启动vim就进入命令模式,此状态下敲击键盘会被vim识别为命令,而非输入字符。这时可以控制屏幕光标的移动,字符、字或行的删除,移动复制某区段,可以切换至不同的模式。
因为最开始的老式键盘并没有现在键盘中的一部分按键,所以vim设置了其他按键来实现对应的功能。同时应为按键有限,所以vim是区分大小写的,大小写不同,命令也是不同的。
vim命令模式中的常用命令
光标移动相关命令:
h/←:光标向左移动一个字符
j/↓:光标向下移动一个字符
k/↑:光标向上移动一个字符
l/→:光标想有移动一个字符
[Ctrl]+f:屏幕向下移动一页,相当于[Page Down]键
[Ctrl]+b:屏幕向上移动一页,相当于[Page Up]键
[Ctrl]+d:屏幕向下移动半页
[Ctrl]+u:屏幕向上移动半页
+:光标移动到非空格符的下一行
-:光标移动到非空格符的上一行
数字n+[space]:光标向右移动n个字符
0/[home]:光标移动到这一行的第一个字符前一位
^:光标移动到所在行的行首
$/[end]:光标移动到这一行的最后候一个字符处
H:光标移动到屏幕最上方一行的第一个字符处
M:光标移动到屏幕中央一行第一个字符处
L:光标移动到这个屏幕最下方一行的第一个字符处
G:光标移动至文本的最后一行
数字n+G:光标移动至文本的第n行的第一个字符处,绝对位置
gg(连按):光标移动至文本第一行第一个字符处
数字n+[Enter]:光标向下移动n行,相对于当前位置移动
删除:
x:删除光标所在位置的字符,在x之前加上数字n,可以实现向后连续删除n个字符
X:删除光标之前的一个字符,在X之前加上数字n,可以实现向前连续删除n个字符
dd:剪切光标所在的那一行,在dd之前加上数字n,可以实现向下剪切n行
d1G:删除光标所在行到第一行的内容
dG:删除光标所在行到之后一行的内容
d$:从光标所在处删除至该行的最后一个字符
d0:从光标所在处删除至该行的第一个字符
复制:
yy:复制光标所在行,在yy之前加上数字n,可以向下复制n行
y1G:复制光标所在行到第一行的所有内容
yG:复制光标所在行到对吼一行的内容
y$:复制光标所在处至该行第一个字符处的内容
y0:复制光标所在处至该行最后一个字符处的内容
粘贴:
p:将已复制的内容,从光标所在行的之下开始粘贴
P:将已复制的内容,从光标所在行的之上开始粘贴
撤销:
u:撤销上一个操作
[Ctrl]+r:重做上一个动作,u与[Ctrl]+r可以相互撤回
.(这里有一个点):重复上一个操作
切换大小写:
~:将光标处的字母进行大小写转换
切换模式:
i/l:进入输入模式,i为从目前光标所在处输入,l为在目前所在行的第一个非空格符处开始输入
a/A:进入输入模式,a为从光标所在的下一个字符处开始输入,A为从光标所在行的最后一个字符处开始输入
o/O:进入输入模式,o为在光标的下一行处输入新的一行,O为在光标的上一行处输入新的一行
s:进入输入模式,s为删除光标处字符开始输入
r/R:进入替换模式,r只会取代光标所在的字符,R会不断向后取代字符,直到按下ESC键停止
:([shift]+;):进入底行模式
[ctrl]+v:进入视图模式
插入模式:
只有在插入模式下,才能够进行文字输入,我们编写代码就是在该模式下。按下ESC键就会切换到命令模式。
末行模式:
末行模式也就是底行模式,可以进行文件的保存或退出,也可以进行文件替换,按下ESC键会切换到命令模式。
底行模式常用命令
搜索:
/关键字:查找含有关键字的内容,并进行高亮显示,同时光标跳转至当前光标之后的第一个关键字处
?关键字:功能与上同,光标跳转至当前光标的前一个关键字处
n:搜索出关键字之后,按n,光标跳转至下一个关键字处
N:搜索出关键字之后,按N,光标跳转至上一个关键字处
替换:
r+一个字符:替换光标所在处的字符,一次只能换一个
数字n1,数字n2s/关键字1/关键字2/g:在n1行至n2行之间,查找关键字1,并将其换成关键字2
【1,$s/关键字1/关键字2/g】/【%s/关键字1/关键字2/g】:从第一行开始查找关键字1,将其替换成关键字2
【1,$s/关键字1/关键字2/gc】/【%s/关键字1/关键字2/gc】:功能与上同,替换之前向用户确认是否替换
存储、退出
w:将编辑的数据写入文件,加上!可以强制写入
q:退出vim,加上!可以强制退出
wq:写入之后退出,加上!可以强制写入并退出
ZZ:保存并退出
ZQ:不保存,强制退出
w[文件名]:将当前文件另存为,名字为方框中的文件名
vim设置
set nu:显示行号
set nonu:取消行号
常用模式关系图:
vim键盘图: