vi 编辑器
文本编辑器,子处理器
ASCII,sed,
vi: Visual Interface
vim: VI improved
全屏编辑器,模式化编辑器
vim模式
编辑模式(命令模式)
输入模式
末行模式
模式转换:
编辑模式-->输入模式:
i :在当前光标所在字符的前面,转为输入模式;
a :在当前光标所在字符的后面,转为输入模式;
o :在当前光标所在行的下方,新建一行,并转为输入模式;
I :在当前光标所在行的行首,转为输入模式;
A:在当前光标所在行的行尾,转为输入模式;
O:在当前光标所在行的上方,新建一行,并转为输入模式;
输入模式-->编辑模式:
ESC
编辑模式-->末行模式
:
eg: 删除第10行 ‘:10d’
删除10-20行 ‘:10,20d’
显示行号 ‘:set nu’
末行模式-->编辑模式:
ESC,ESC
一、打开文件
vim /path/to/somefile
vim +# filename: 直接打开文件至第#行数
vim + filename: 直接打开文件至最后一行
vim +/PATTERN: 打开文件,定位至第一次被PATTERN匹配的行首
eg: 匹配/etc/inittab文本中第一个出现System的字符串
vi +/System /etc/inittab
默认处于编辑模式
二、关闭文件
1、末行模式下关闭文件
:q 不保存退出
:wq 保存并退出 --> :x
:q! 不保存强行退出
:w 保存
:w! 强行保存
2、编辑模式下退出
ZZ 保存退出
三、移动光标(编辑模式下)
1)逐字符移动
h:左
l:右
j:下
k:上
#h :向左移动#个字符
2) 以单词为单位移动
w:移至下一个单词的词首
e:跳至当前或下一个单词的词尾
b:跳至当前或前一个单词的词首
#w:移至下#个单词的词首
3) 行内跳转:
0:跳至绝对行首
^:跳至行首的第一个非空白字符;
$:跳至绝对行尾
4) 行间跳转
#G:直接跳转至第#行
G:直接跳转至最后一行
gg:直接跳转至第一行
末行模式下,直接给出行号即可
四、翻屏(编辑模式下)
Ctrl+f:向下翻一屏
Ctrl+b:向上翻一屏
Ctrl+d:向下翻半屏
Ctrl+u:向上翻半屏
五、删除单个字符(编辑模式下)
x :删除光标所在处的单个字符
#x:删除光标所在处及向后的共#个字符
六、删除命令:d
d命令跟跳转命令组合使用:
dw:删除光标坐在单词
d^:删除光标坐在单词至行首的字符串
#dw,#de,#db
dd:删除当前光标所在行
#dd:删除包括当前光标所在行在内的#行
末行模式下:
StarADD,EndADDd
eg:删除10-20行
:10,20d
. 表示当前行
eg:删除当前行及下5行
:.,+5d
删除当前行至第5行
:.,5d
$ 表示最后一行
+#表示向下#行
$-3表示倒数第3行
七、粘贴命令:p
p(小写):如果删除或复制为整行内容,则粘贴至光标所在行的下方;如果删除或复制为非整行内容,则粘贴至光标所在行的后方;
P(大写):如果删除或复制为整行内容,则粘贴至光标所在行的上方;如果删除或复制为非整行内容,则粘贴至光标所在行的前方;
八、复制命令:y (yank)
用法同d命令
九、修改:先删除指定内容,再转换会自动模式
c: change用法同d命令
十、替换:r (replace)
r: 在将光标所在字符原位替换
R:进入替换模式,可连续将光标所在字符原位替换,按ESC键退出替换模式。
十一:撤销编辑操作:u (undo)
u:撤销前一次的编辑操作
连续u命令可撤销此前的n次编辑操作
#u:直接撤销最近#次操作
注:最多撤销50次,因为内存缓冲区只保存最近50次的编辑内容
撤销最近一次撤销撤销:Ctrl+r
十二、重组前一次编辑操作
.
十三、可视化模式
v: 按字符选取
V:按矩形选取
十四、查找
/PATTERN
?/PATTERN
n 下一个
N 上一个
十五、查找并替换
在末行模式下使用s命令:
ADDR1,ADDR2s/PATTERN/string/gi
eg: 将当前行至倒数第2行中出现的全部所有he替换成HE
.,$-2s/he/HE/g