VI编辑器可以分为3种状态,它们分别是命令模式、输入模式以及末行模式,VI运行后默认进入命令模式。
命令模式:控制屏幕光标的移动,字符、单词或行的删除、替换,复制粘贴数据以及由此进入插入模式和末行模式。
输入模式:在命令模式下,用户输入的字符都会被VI当作命令解释执行。如果用户把输入的字符当作文本内容,则必须要先进入输入模式。在命令模式下按下 a,i,o键,即可进入输入模式。在输入模式下按下Esc键可返回命令模式。
末行模式:在命令模式下,按下“:”键即可进入末行模式,此时VI会在显示窗口的最后一行显示一个":"提示符,用户可在此输入命令。在该文件下可以保存文件,退出VI,也可以查找并替换字符、列出行号、跳到指定行号的行等。命令完成后会自动返回命令模式,可可以手动按下Esc键返回。
进入输入模式几种方式
i:在当前光标所在处前插入文本。
I:将光标移动到当前行的行首,并在行首前插入文本。
a:在当前光标所在处之后插入文本。
A:将光标移动到当前行的末行,并在末行之后插入文本。
o:在光标所在行的下面新插入一行,并将光标移动到新行的行首插入文本。
O:在光标所在行的上面新插入一行,并将光标移动到新行的行首插入文本。
命令行模式下
0或^:移动光标到当前行的行首。
$:移动光标到当前行的行末。
dd:删除光标所在行。
do:删至行首
d$:删至行尾
u 撤消最后一次修改
U 撤消当前行的所有修改
. 重复最后一次修改
搜索字符串使用/或?,/表示向下搜索,?表示向下搜索
例如从开始位置向下搜索"bind-address",可以使用/bind-address 然后按Enter键,n键是查找下一个,N查找上一个,如果搜索的内容包含特殊字符可以使用转移符号"\"
替换字符串
:s/str1/str2/ #用字符串str2换行中首次出现的字符串str1
:s/str1/str2/g #用字符串str2替换行中所有出现的字符串str1
:.,$ s/str1/str2/g 用字符串 str2 替换正文当前行到末尾所有出现的字符串 str1
:1,$ s/str1/str2/g 用字符串 str2 替换正文中所有出现的字符串 str1
:g/str1/s//str2/g 功能同上从上述替换命令,可以看到:g 放在命令末尾,表示对搜索字符串的每次出现进行替换;不加 g,表示只对搜索字符串的首次出现进行替换;g 放在命令开头,表示对正文中所有包含搜索字符串的行进行替换操作。
复制当前行使用yy
粘贴已复制的行p
末行模式命令
w:保存当前文件。
w!:强制保存。
q:退出vi。
q!:不保存文件退出vi。
n:移动光标到第n行。
ctrl + g 可以知道cursor的那一行的行数
shift+g可以到最后一行
末行模式输入:set nu 可显示行号
末行模式下直接输入行号可将光标定位到指定行
ssh 进入终端(terminal)后
Ctrl+e 将光标移至末尾
Ctrl+a 将光标移至首位
Ctrl+k 删除此处至末尾所有内容
Ctrl+u 删除此处至开始所有内容
Ctrl-L 清除当前屏幕
Ctrl-C -杀死当前任务
复制为ctrl-shift-c
粘贴为ctrl-shift-v
tab=补全