@Beeder
2017-12-23T16:30:57.000000Z
字数 1520
阅读 540
Linux
基本上vi可分为三种操作状态,命令模式(Command mode)、插入模式(Insert mode)和底线命令模式(Last line mode)
各模式的功能区分如下:
1. Comand mode:控制屏幕光标的移动,字符或光标的删除,移动复制某区段及进入Insert mode下,或者到Last line mode。
2. Insert mode:唯有在Insert mode下,才可做文字数据输入,按Esc等可回到Comand mode。
3. Last line mode:将储存文件或离开编辑器,也可设置编辑环境,如寻找字符串、列出行号等。
$ vi testfile
进入vi后默认是处于“Command mode”下
插入模式(Insert mode)
i: 插入,从目前光标所在之处插入所输入的文字。
a: 增加,目前光标所在的下一个字开始输入文字。
o: 插入新的一行,从行首开始输入文字。
底线命令模式(Last line mode)
切换`底线命令模式(Last line mode)` 按':'或'/'或'?'键
h、j、k、l 光标左、下、上、右移一格
gg 移动文章的开头
G 移动到文章的最后
w 光标跳到下个word的开头
e 光标跳到下个word的字尾
b 光标回到上个word的开头
$ 移到光标所在行的行尾
^ 移到该行第一个非空白的字符
0 移到该行的开头位置
按Ctrl+B 屏幕往后移动一页
按Ctrl+F 屏幕往前移动一页
按Ctrl+U 屏幕往后移动半页
按Ctrl+D 屏幕往前移动半页
x: 删除光标所在位置的后面一个字符
#x: 删除光标所在位置的后面#个字符
X: 删除光标所在位置的前面一个字符
#X: 删除光标所在位置的前面#个字符
dd: 删除光标所在行
#dd: 删除从光标所在的该行往下数#行之文字
yw 将光标所在处到字尾的字符复制到缓冲区中
yy 将光标所在行复制到缓冲区中
#yy 从光标所在的该行往下数#行都复制到缓冲区中
p 将缓冲区内的字符粘贴到光标所在位置(必须与'yw'或'yy'搭配使用)
r 取代光标所在处的字符
R 取代字符直到按Esc为止
u 回复到上一个操作
.(点) 重复执行上一次的指令。
cw 更改光标所在处的字到字尾$处。
c#w 更改#个字符
#G 移动光标至文章的第#行行首
可以输入内容
命令模式(Command mode)
切换`命令模式Command mode` 按'Esc'键
:set nu 在文章的每一行前面列出行号
:# 跳转至#行
:/String || ?字符串 寻找String字符串
:n 向下继续寻找String字符串
:N 向上继续寻找String字符串
:s/p1/p2/g 将当前行中所有p1均用p2替代
:n1,n2s/p1/p2/g 将第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g 将文件中所有p1均用p2替换
:w filename 保存并存入指定的文件名filename
:wq 保存并退出
:q! 强制退出并放弃编辑