以下内容摘自百科:
vi或vim是Linux最基本的文本编辑工具,vi或vim虽然没有图形界面编辑器那样点鼠标的简单操作,但vi编辑器在系统管理、服务器管理字符界面中,永远不是图形界面的编辑器能比的。
# vi 的三种命令模式
[]Command(命令)模式,用于输入命令[/][]Insert(插入)模式,用于插入文本[/][]Visual(可视)模式,用于视化的的高亮并选定正文[/]
# 光标移动
当我们按ESC进入Command模式后,我们可以用下面的一些键位来移动光标;
j 向下移动一行
k 向上移动一行
h 向左移动一个字符
l 向右移动一个字符
ctrl+b 向上移动一屏
ctrl+f 向下移动一屏
向上箭头 向上移动
向下箭头 向下移动
向左箭头 向左移动
向右箭头 向右移动
我们编辑一个文件时,对于 j、k、l和h键,还能在这些动作命令的前面加上数字,比如 3j,表示向下移动3行。
/# +Enter #为查找的内容
# 插入模式(文本的插入)
i 在光标之前插入
a 在光标之后插入
I 在光标所在行的行首插入
A 在光标所在行的行末插入
o 在光标所在的行的下面插入一行
O 在光标所在的行的上面插入一行
s 用输入的文本替换光标所在字符
S 用输入的文本替换光标所在行
# 文本内容的删除操作;
x 一个字符
#x 删除几个字符,#表示数字,比如3x
dw 删除一个单词
#dw 删除几个单词,#用数字表示,比如3dw表示删除三个单词
dd 删除一行;
#dd 删除多个行,#代表数字,比如3dd 表示删除光标行及光标的下两行
d$ 删除光标到行尾的内容
J 清除光标所处的行与下一行之间的换行,行尾没有空格的话会自动添加一个空格。
#J 表示合并#(数字)行。
# 退出保存;
在命令模式下按 shift+: 文本底端出现冒号
:w 保存;
:w filename 另存为filename;
:wq! 保存退出;
:wq! filename 注:以filename为文件名保存后退出;
:q! 不保存退出;
:x 应该是保存并退出 ,功能和:wq!相同
# 撤销操作
u命令取消最近一次的操作,可以使用多次来恢复原有的操作[1]
U取消所有操作
Ctrl+R可以恢复对使用u命令的操作
# 复制操作
yy命令复制当前整行的内容到vi缓冲区
yw复制当前光标所在位置到单词尾字符的内容到vi缓存区,相当于复制一个单词
y$复制光标所在位置到行尾内容到缓存区
y^复制光标所在位置到行首内容到缓存区
#yy例如:5yy就是复制5行
#yw例如:2yw就是复制两个单词
如果要复制第m行到第n行之间的内容,可以在末行模式中输入m,ny例如:3,5y复制第三行到第五行内容到缓存区。
# 查找和替换
vi的查找和替换功能主要在末行模式完成:
至上而下的查找
/ 要查找的字符串,其中/代表从光标所在位置起开始查找,例如:/ work
至下而上的查找
?要查找的字符串 例如:? work
替换
:s/old/new用new替换行中首次出现的old
: s/old/new/g 用new替换行中所有出现的old
:#,# s/old/new/g用new替换从第#行到第#行中出现的old
:% s/old/new/g用new替换整篇中出现的old
如果替换的范围较大时,在所有的命令尾加一个c命令,强制每个替换需要用户进行确认,例如:s/old/new/c 或s/old/new/gc
# 恢复文件
vi在编辑某一个文件时,会生成一个临时文件,这个文件以 . 开头并以 .swp结尾。正常退出该文件自动删除,如果意外退出例如忽然断电,该文件不会删除,我们在下次编辑时可以选择一下命令处理:
O只读打开,不改变文件内容
E继续编辑文件,不恢复.swp文件保存的内容
R将恢复上次编辑以后未保存文件内容
Q退出vi
D删除.swp文件
或者使用vi -r 文件名来恢复未保存的内容。