vi编辑器是Linux系统下标准的编辑器,一般linux都没有桌面环境,平常修改一些配置文件,编写脚本对于vi编辑器来说都很方便,所以我们有必要学会并熟练使用它。
vi编辑器可以分为三种状态,分别是命令模式、插入模式和底行模式
- 命令行模式:控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入插入模式下,或者到 底行模式。
- 插入模式:只有在插入模式下,才可以做文字输入,按「ESC」键可回到命令行模式。
- 底行模式:将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。
下面列举一些常用命令和技巧
基本使用
我们如何进入vi编辑器呢?
输入vi fileName
命令进入vi编辑器,这时处于命令行模式。
在命令模式下按下i
字母就会进入插入模式,这时就可以对对文件进行编辑了。
那我们如何退出vi编辑器呢?
在命令行模式下,按一下 :
冒号键进入底行模式
-
:w
保存但不退出。 -
:w fileName
文件另存为filename。 -
:wq
保存并退出。 -
:q
退出但不保存。
在末尾加入!
表示强制执行,例如:q!
表示强制退出但不保存。
命令行模式功能键
进入插入模式的几种方法。
- 按
i
进入插入模式后,光标当前位置开始输入文件; - 按大写
I
进入插入模式后,光标所在行开始位置开始输入文件 - 按
a
进入插入模式后,光标所在位置的下一个位置开始输入文字; - 按
A
进入插入模式后,光标所在行末尾开始输入文字; - 按
o
进入插入模式后,在当前行下一行插入新的一行,从行首开始输入文字。 - 按
O
进入插入模式后,在当前行上一行是插入新的一行,从行首开始输入文字。
移动光标
vi可以直接用键盘上的光标来上下左右移动,但正规的vi是用小写英文字母hjkl
,分别控制光标左、下、上、右移一格。
其他移动光标的功能键
-
ctrl + b
屏幕往“后”移动一页。 -
ctrl + f
屏幕往“前”移动一页。 -
ctrl + u
屏幕往“后”移动半页 -
ctrl + d
屏幕往“前”移动半页。 -
home
,^
,0
移到行首。 -
end
,\$
移到行尾 -
gg
移到文件开头。 -
G
移到文件最后。 -
w
光标跳到下个字的开头 -
e
光标跳到下个字的字尾 -
b
光标回到上个字的开头 -
#l
光标移到该行的第#个位置,如:5l,56l。
删除文字
-
x
每按一次,删除光标所在位置的“后面”一个字符。 -
#x
:例如,「6x」表示删除光标所在位置的“后面”6个字符。 -
X
大写的X,每按一次,删除光标所在位置的“前面”一个字符。 -
#X
例如,「20X」表示删除光标所在位置的“前面”20个字符。 -
dd
删除光标所在行。 -
#dd
从光标所在行开始删除#行
复制
-
yw
将光标所在之处到字尾的字符复制到缓冲区中。 -
#wy
复制#个字到缓冲区 -
yy
复制光标所在行到缓冲区。 -
#yy
例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。 -
p
将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。
替换
-
r
替换光标所在处的字符。 -
R
替换光标所到之处的字符,直到按下「ESC」键为止。
撤销
-
u
如果您误执行一个命令,可以马上按下u
,回到上一个操作。按多次“u”可以执行多次回复。
更改
-
cw
更改光标所在处的字到字尾处 -
c#w
例如,c3w
表示更改3个字
跳至指定的行
-
ctrl + g
列出光标所在行的行号。 -
#G
例如,10G
,表示移动光标至文章的第15行行首。
底行模式下命令简介
在使用底行模式之前,请记住先按「ESC」键确定您已经处于命令行模式下后,再按:
冒号即可进入底行模式。
列出行号
-
set nu
输入set nu
后,会在文件中的每一行前面列出行号。
跳到文件中的某一行
-
#
号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。
查找字符 .
-
/关键字
先按/
键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按n
会往后寻找到您要的关键字为止。 -
?关键字
先按?
键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按n
会往前寻找到您要的关键字为止。
保存文件
-
w
在冒号输入字母w
就可以将文件保存起来。
离开vi
-
q
按「q」就是退出,如果无法离开vi,可以在q
跟一个!
强制离开vi。 -
qw
一般建议离开时,搭配w
一起使用,这样在退出的时候还可以保存文件。