1.什么是vi编辑器?
vi编辑器是学习linux系统的必备技术之一,因为一般的linux服务器是没有gui界面的,linux运维及开发人员基本上都是通过命令行的方式进行文本编辑或程序编写的。
vi编辑器是linux内置的文本编辑器,几乎所有的类unix系统中都内置了vi编辑器,而其他编辑器则不一定,另外很多软件会调用vi编辑器进行内容编写,例如crontab定时任务。
较之于其他编辑器或gui编辑器,vi编辑器速度是最快的。vim是它的增强版,vi有3种工作模式,分别是:命令模式、插入模式和底行模式。
2.vi编辑器的3种模式
命令模式:所有操作都是命令
编辑模式:插入内容
底行模式:保存/退出(wq:保存退出,q!:强制退出,w:只保存)
vi编辑器3种模式切换如下图所示:
3.命令模式下的常见命令
3.1.光标移动
字符移动 ↑ ↓ ← → hjkl
w/W:单词首字母向后移动(W忽略标点符号)
b/B:单词首字母向前移动(B忽略标点符号)
e/E:单词尾字母向后移动(E忽略标点符号)
():逐句移动,句子结束标识是.加换行
{}:逐句移动,段落结束标识是空行
G:直接跳到文件的末行行首
gg:直接跳到文件的首行行首
O:移动光标到下一行句首
$:移动光标到本行行尾
H:屏幕顶端
L:屏幕底端
M:移动到屏幕中央位置
3.2.最强光标移动
%:匹配括号移动,包括(,[,{。(你需要把光标先移动到括号上)
*:匹配光标当前所在的单词,移动光标到下一个匹配单词
#:匹配光标当前所在的单词,移动光标到上一个匹配单词
3.3.操作命令
a/A:光标的下一位插入(A:光标所在行的行尾插入)
i/I:光标的前一位插入(I:光标所在行的行首插入)
o/O:光标下一行插入(O:光标所在行插入)
dd:删除光标所在行,比如dd,3dd等
yy:复制光标所在行,比如yy,3yy等
p:paste 粘贴
u:undo 撤销
4.底行模式下的常见命令
4.1.查找
:set nu #显示行号
:set nonu #隐藏行号
:行号 跳转到指定行
:/字母 查找该字母(n:跳到下一个;N:跳到上一个;:noh:取消高亮)
4.2.替换
通用格式::开始行号,结束行号 s/被替换内容/替换内容/g
:1 s/sad/ddd 将第1行的第1个sad替换为ddd
:1,5 s/sad/ddd 将第1行到第5行的第1个sad替换为ddd
:1,. s/sad/ddd 将第1行到光标行的第1个sad替换为ddd
:.,$ s/sad/ddd 将光标行到缓冲区最后一行的第1个sad替换为ddd
:s/sad/ddd 将光标所在行的第1个sad替换为ddd
:s/sad/ddd/g 查找光标所在行的所有sad替换为ddd
:%s/sad/ddd/ 查找文件中所有行第1次出现sad替换为ddd
:%s/sad/bbb/g 查找文件中所有的sad替换为ddd
4.3.其他小技巧
r 替换光标处一个字符
R 进入替换模式,从光标处连续替换
s 删除当前字符,进入插入模式
S 删除当前行,进入插入模式
f+s 光标行内向后查找第一个出现的字符s
F+s 光标行内向前查找第一个出现的字符s
~ 大小写转换,只转换光标处字符
真正宝藏:vim详解http://linux.ctolib.com/cheat-sheets/view/Vim-command.html