什么是vim?

vim是从vi发展来的一个程序开发工具。vi一般在Linux系统都会有,但vim则不一定都会有。vim不仅仅是文本编辑器,还是程序开发者的工具,包括代码补全、编译及错误跳转等丰富的编程功能。

以下是vim键盘图:

vim常用操作命令

vim的使用

vim共有三种模式,分别是命令模式(command mode),输入模式(insert mode)和底线命令模式(last line mode)。以下分别对三种模式进行简述。

命令模式

当使用vim命令时,便进入了命令模式。如果文件不存在,在文件中写入内容并保存退出,则创建了一个新的文件。

在命令模式下敲击键盘会被vim识别为命令,而不是输入字符。

常用的命令:

按下i,切换到输入模式,可以输入字符。

按下:,切换到底线命令模式,可以在最后一行输入命令。

输入模式

在命令模式下按下iao就进入了输入模式,可以对文件进行增删改查操作。当按下ESC就退出了输入模式,进入到命令模式。

底线命令模式

在命令模式下按下:就进入到了底线命令模式,按ESC可以随时退出底线命令模式,进入到命令模式。

按下q,退出文件。

按下w,保存文件。

按下wq,保存文件并退出。

按下q!,强制退出文件。

按下wq!,保存文件并强制退出。

下图将更形象的说明三个模式之间的关系

vim常用操作命令

vim操作举例

下面以httpd.conf文件为例进行操作,首先进入文件。

vim常用操作命令

输入图上命令,进入命令模式

vim常用操作命令

然后按下i,进入输入模式,可以编辑文本,最下方会出现--插入--的字样,提示可以输入字符

vim常用操作命令

然后我们在光标处输入字符

vim常用操作命令

输入完成后,按下ESC,在按下:wq就可以写入文本并退出了。

vim常用操作命令

vim常用操作命令

然后我们在打开文件看看刚才的文件是否写入成功

vim常用操作命令

再次打开之后可以看到写入成功

vim常用按键

命令模式常用按键

移动光标按键

向左移动,h或向左箭头

向下移动,j或向下箭头

向上移动,k或向上箭头

向右移动,l或向右箭头

hjkl(左下上右),如果向下移动30行,可以使用“30j”组合按键,如果向上移动30行,则可以使用“30k”组合按键

屏幕向下移动一页,PD或Ctrl+f

屏幕向上移动一页,PU或Ctrl+b

屏幕向下移动半页,Ctrl+d

屏幕向上移动半页,Ctrl+u

移动到光标所在行的第一个字符,数字0或Home键

移动到光标所在行的最后一个字符,$或者End键

移动到当前屏幕的最上方那一行的第一个字符,H

移动到当前屏幕中间那一行的第一个字符,M

移动到当前屏幕最下方的那一行的第一个字符,L

移动到文件的最后一行,G

移动到文件的第一行,gg

移动到文件的第n行,nG

向下移动n行,数字n

查询按键

向下查询名称为directory的字符串,/directory

向上查询名称为listen的字符串,?listen

重复刚刚向下查询,字母n

重复刚刚向上查询,字母N

替换按键

例如,在100行到200行将directory替换为DIRECTORY,命令为:100,200s/directory/DIRECTORY/g

在第一行到最后一行将listen替换为LISTEN,替换前需要确认,命令为:1,$s/listen/LISTEN/gc

删除按键

x向后删除一个字符,相当于delete,X向前删除一个字符,相当于backspace

nx连续向后删除n个字符

dd删除光标所在的一整行

ndd删除光标所在的向下n行,包括光标所在行

d1G删除光标所在到第一行的所有数据

dG删除光标所在到最后一行的所有数据

复制按键

yy复制光标所在的那一行

nyy复制光标所在的向下n行,n是数字

y1G复制光标所在列到第一列的所有数据

yG复制光标所在列到最后一行的所有数据

u复原上一个动作

.重复上一个动作

Ctrl+r重复上一个动作

命令模式切换到输入模式常用按键

i进入输入模式,i为从目前光标所在处输入

a进入输入模式,a为从目前光标所在的下一个字符开始输入

o进入输入模式,在目前光标所在的下一行输入新的一行

ESC退出编辑模式进入到命令模式

输入aio,文本的左下方会显示“--插入--”字样

命令模式切换到底线命令模式常用按键

:w将输入的数据写入到硬盘中

:w!将输入的数据强制写入到硬盘中

:q退出vim

:q!将输入的数据不写入到硬盘强制退出vim

:wq将输入的数据写入到硬盘并离开vim

:wq!将输入的数据强制写入到硬盘再离开vim

:w[httpd-test.conf]将httpd.conf文件另存为httpd-test.conf

:r[test.txt]将test.txt文件中的内容添加到光标所在行后面

相关文章: