1.熟练使用vim 编辑器
vim是vimsual interface的简称,它可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制。这是其他编辑程序所没有的。vim 不是一个排版程序,它不像 Word 或 WPS那样可以对字体、格式、段落等其他属性进行编排,它只是一个文本编辑程序。vim是全屏幕文本编辑器,没有菜单,只有命令。
1.1启动与退出vim
在系统提示符后输入vim 和想要编辑(或建立)的文件名,便可进入vim,如:
[root@RHEL7-1 ~]# vim myfile
如果只输入vim,而不带文件名,也可以进入vim,如图7-1所示。
在编辑模式下(初次进入vim不做任何操作就是编辑模式)键入:q,:q!,:wq 或:x(注意“:”),就会退出 vim。其中:wq 和:x是存盘退出,而:q是直接退出。如果文件已有新的变化,vim 会提示你保存文件,而:q命令也会失效。这时可以用:w命令保存文件后再用:q退出,或用:wq 或:x命令退出。如果你不想保存改变后的文件,就需要用:q!命令。这个命令将不保存文件而直接退出vim,例如:
vim 编辑环境 |
|
:w |
保存 |
:w filename |
另存为filename |
:wq! |
保存退出 |
:wq! filename |
注:以filename为文件名保存后退出 |
:q! |
不保存退出 |
:x |
应该是保存并退出,功能和:wq!相同 |
1.2 熟练掌握vim的工作模式
vim有3种基本工作模式:编辑模式、插入模式和命令模式。考虑到各种用户的需要,采用状态切换的方法实现工作模式的转换,切换只是习惯性的问题,一旦熟练地使用上了vim你就会觉得它其实也很好用。
1.2.1编辑模式
进入vim。之后,首先进入的就是编辑模式。进入编辑模式后,vim等待编辑命令输入而不是文本输入。也就是说,这时输入的字母都将作为编辑命令来解释。
进入编辑模式后光标停在屏幕第一行首位,用“_”表示,其余各行的行首均有一个“_”符号,表示该行为空行。最后一行是状态行,显示出当前正在编辑的文件名及其状态。如果是[New File],则表示该文件是一个新建的文件;如果输入vim带文件名后,文件已在系统中存在,则在屏幕上显示出该文件的内容,并且光标停在第一行的首位,在状态行显示出该文件的文件名、行数和字符数。
1.2.2插入模式
在编辑模式下按下相应的键可以进入插入模式:插入命令i、附加命令a、打开命令。、修改命令c、取代命令r或替换命令s都可以进入插入模式。在插入模式下,用户输入的任何字符都被 vim 当作文件内容保存起来,并将其显示在屏幕上。在文本输入过程中(插入模式下),若想回到编辑模式下,按“Esc”键即可。
1.2.3命令模式
在编辑模式下,用户按“:”键即可进入命令模式。此时vim会在显示窗口的最后一行(通常也是屏幕的最后一行)显示一个“:”作为命令模式的提示符,等待用户输入命令。多数文件管理命令都是在此模式下执行的。末行命令执行完后,vim 自动回到编辑模式。
若在命令模式下输入命令的过程中改变了主意,可在用退格键将输入的命令全部删除之后,再按一下退格键,即可使vim回到编辑模式。
1.3 使用vim 命令
1.3.1在编辑模式下的命令说明
在编辑模式下,光标移动、查找与替换、复制粘贴等的说明分别如表1、表2和表3所示。
表1 编辑模式下的光标移动的说明
移动光标的方法 |
|
h或向左箭头键(←) |
光标向左移动一个字符 |
j或向下箭头键(↓) |
光标向下移动一个字符 |
k或向上箭头键(↑) |
光标向上移动一个字符 |
l或向右箭头键(→) |
光标向右移动一个字符 |
Crl+f |
屏幕向下移动一页,相当于“Page Down”键(常用) |
Ctrl+b |
屏幕向上移动一页,相当于“Page Up”键(常用) |
Ctrl+d |
屏幕向下移动半页 |
Ctrl+u |
屏幕向上移动半页 |
+ |
光标移动到非空格符的下一列 |
- |
光标移动到非空格符的上一列 |
n<space> |
n表示数字,例如20。按下数字后再按空格键,光标会向右移动这一行的n个字符。例如输入20<space>则光标会向后面移动20个字符距离 |
0或功能键“Homen |
这是数字0:移动到这一行的最前面字符处(常用) |
$或功能键“End" |
移动到这一行的最后面字符处(常用) |
H |
光标移动到这个屏幕的最上方那一行的第一个字符 |
M |
光标移动到这个屏幕的中央那一行的第一个字符 |
L |
光标移动到这个屏幕的最下方那一行的第一个字符 |
G |
移动到这个文件的最后一行(常用) |
nG |
n为数字。移动到这个文件的第n行。例如输入20G则会移动到这个文件的第20行(可配合:setnu) |
gg |
移动到这个文件的第一行,相当于1G(常用) |
n<Enter> |
n为数字。光标向下移动n行(常用) |
说明:如果将右手放在键盘上,你会发现h、j、k、1是排列在一起的,因此可以使用这4个按钮来移动光标。如果想要进行多次移动,例如向下移动30行,可以使用“30xj”或“30×↓”的组合按键,即加上想要进行的次数(数字)后,按下动作即可。
表2 编辑模式下的查找与替换的说明
查找与替换 |
|
/word |
向光标之下寻找一个名称为word的字符串。例如要在文件内查找myweb 这 |
?word |
向光标之上寻找一个名称为word的字符串 |
n |
这个n是英文按键。代表重复前一个查找的动作。举例来说,如果刚刚我们执行/myweb 去向下查找myweb这个字符串,则按下n后,会向下继续查找下一个名称为myweb的字符串。如果是执行?myweb,那么按下n则会向上继续查找名称为myweb的字符串 |
N |
这个N是英文按键。与n刚好相反,为反向进行前一个查找动作。例如执行 |
使用/word配合n及N是非常有帮助的!可以让你重复地找到一些查找的关键词 |
|
:n1,n2 s/word1/word2/g |
n1与n2为数字。在第nl~n2行寻找wordl这个字符串,并将该字符串取代为word2!举例来说,在100~200行查找myweb并取代为MYWEB则输入":100,200s/myweb/MYWEB/g”(常用) |
:1,$ s/word1/word2/g |
从第一行到最后一行寻找word1字符串,并将该字符串取代为word2(常用) |
:1,$ s/word1/word2/gc |
从第一行到最后一行寻找 wordl字符串,并将该字符串取代为word2!且在取代前显示提示字符给用户确认(confimm)是否需要取代(常用) |
表3 编辑模式下删除、复制与粘贴的说明
删除、复制与粘贴 |
|
x,X |
在一行字当中,x为向后删除一个字符(相当于“Del”键),X为向前删除一个字符(相当于Backspace,退格键)(常用) |
nx |
n为数字,连续向后删除n个字符。举例来说,要连续删除10个字符,输入10x |
dd |
删除光标所在的那一整列(常用) |
ndd |
n为数字。删除光标所在的向下n行,例如,20dd是删除20行(常用) |
d1G |
删除光标所在到第一行的所有数据 |
dG |
删除光标所在到最后一行的所有数据 |
d$ |
删除光标所在处,到该行的最后一个字符 |
d0 |
那个是数字0,删除光标所在行的前一字符到该行的首个字符之间的所有字符 |
yy |
复制光标所在的那一行(常用) |
nyy |
n为数字。复制光标处向下n行,例如20yy是复制20行(常用) |
y1g |
复制光标所在行到第一行的所有数据 |
yG |
复制光标所在行到最后一行的所有数据 |
y0 |
复制光标所在的前一个字符到该行行首的所有数据 |
y$ |
复制光标所在的那个字符到该行行尾的所有数据 |
p,P |
p为将已复制的数据在光标下一行粘贴上,P则为粘贴在光标上一行! 举例来说,目前光标在第20行,且已经复制了10行数据,则按下p后,那10行数据会粘贴在原来的20行之后,即由21行开始粘贴。但如果是按下P呢?将会在光标之前粘贴,即原本的第20行会变成第30行(常用) |
J |
将光标所在行与下一行的数据结合成同一行 |
c |
重复删除多个数据,例如向下删除10行,输入10cj |
u |
复原前一个动作(常用) |
Ctrl+r |
重做上一个动作(常用) |
. |
不要怀疑!这就是小数点!意思是重复前一个动作的意思。如果你想要重复删除、重复粘贴等动作,按下小数点就可以(常用) |
说明:这个“u”与“Ctrl+r是很常用的指令!一个是复原,另一个则是重做一次。利用这两个功能按键,将会为编辑提供很多方便。
这些命令看似复杂,其实使用时非常简单。例如,在编辑模式下使用5yy复制后,再使用以下命令进行粘贴。
p 在光标之后粘贴
Shift+p 在光标之前粘贴
当进行查找和替换时,要按“Esc”键,进入命令模式;输入/或?就可以进行查找了。例如,在一个文件中查找swap单词,首先按“Esc”键,进入命令模式,然后输入:
/swap
或
?swap
若把光标所在行中的所有单词the,替换成THE,则需输入:
:s /the/THE/g
仅把第1行到第10行中的the,替换成THE:
:1,10 s /the/THE/g
这些编辑指令非常有弹性,基本上可以说是由指令与范围所构成的。需要注意的是,我们采用计算机的键盘来说明vim的操作,但在具体的环境中还要参考相应的资料。
1.3.2进入插入模式的命令说明
编辑模式切换到插入模式的可用的按键的相关说明如表4所示。
表4进入插入模式的说明
类型 |
命令 |
说 明 |
进入插入模式 |
i |
从光标所在位置前开始插入文本 |
I |
该命令是将光标移到当前行的行首,然后插入文本 |
|
a |
用于在光标当前所在位置之后追加新文本 |
|
A |
将光标移到所在行的行尾,从那里开始插入新文本 |
|
o |
在光标所在行的下面新开一行,并将光标置于该行行首,等待输入 |
|
O |
在光标所在行的上面插入一行,并将光标置于该行行首,等待输人 |
|
Esc |
退出编辑模式或回到编辑模式中(常用) |
说明:上面这些按键中,在vim 画面的左下角处会出现·“--INSERT.--”或“--REPLACE--"的字样。由名称就知道该动作了。需要特别注意的是,我们上面也提过了,想要在文件里面输入字符,一定要在左下角处看到INSERT或REPLACE才能输入。
1.3.3命令模式的按键说明
如果是插入模式,先按“Esc”键进入编辑模式。在编辑模式下按“:”进人命令模式。保存文件、退出编辑等的命令按键如表5所示。
表5命令模式的按键说明
:w |
将编辑的数据写入硬盘文件中(常用) |
:w! |
若文件属性为只读时,强制写入该档案。不过,到底能不能写入,还与你对该文件拥有的权限有关 |
:q |
退出vim(常用)快捷键为SHIFT+ZZ |
:q! |
若曾修改过文件,又不想储存,则使用“!”强制退出而不储存文件。注意一下,惊叹号(!)在vim当中,常常具有强制的意思快捷键为SHIFT+ZZ |
:wq |
储存后离开,若为“:wq!”,则为强制储存后离开(常用) |
ZZ |
这是大写的Z。若文件没有更改,则不储存离开;若文件已经被更动过,则储存后离开 |
:w[filename] |
将编辑的数据储存成另一个文件(类似另存为新文件) |
:r[filename] |
在编辑的数据中,读入另一个文件的数据,即将filename这个文件内容加到光标所在行的后面 |
:n1,n2 w[filename] |
将n1到n2的内容储存成filename这个文件 |
:! command |
暂时退出vim到命令列模式下执行command的显示结果。例如,“:!ls/home”即可在vim当中察看/home底下以1s输出的文件信息 |
:set nu |
显示行号,设定之后,会在每一行的前缀显示该行的行号 |
:set nonu |
与:setnu相反,为取消行号 |