为什么学 vi?
(1)所有的 Unix Like 系统都会内建 vi 文本编辑器,其他的文本编
辑器则不一定会存在;
(2)很多个别软件的编辑接口都会主动呼叫 vi (例如未来会谈到的
crontab, visudo, edquota 等指令);
(3)vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法癿正
确性,方便程序设计;
(4)因为程序简单,编辑速度相当快速。
我们所学习的vi分为三种模式,一般模式,编辑模式和命令行模式
1 一般模式:vi打开一个文件就会进入到一般模式,(这也是系统默认的模式),可以使用上下键来移动光标,也可以做删除,复制,粘贴的操作
2 编辑模式: 在一般模式下虽然可以做删除,复制,粘贴的操作,可是没有办法做编辑,在此模式中,按下“i I a A r R o O "任意一个字符,在左下方会出现INSERT 或 REPLACE 的字样,此时才可以进行编辑,按下【esc】会退出编辑回到一般模式
3 命令行模式: 在一般模式中,输入“:/ ?” 都会移动到光标最后一行,在这个模式中,可以做查找数据的操作,读取,保存,大量替换字符,显示行号,离开vi等操作
第一部分:一般模式下可用的按钮说明光标移动,复制粘贴,查找替换
移动光标
h 或 ← 光标向左移动一个字符
L 或 → 光标向右移动一个字符
k 或 ↑ 光标向上移动一个字符
j 或 ↓ 光标向下移动一个字符
【Ctrl】+ 【f】 屏幕向下移动一页
【Ctrl】+ 【b】 屏幕向上移动一页
【Ctrl】+ 【d】 屏幕向下移动半页
【Ctrl】+ 【u】 屏幕向下移动半页
+ 光标移动到非空格符的下一行
- 光标移动到非空格符的上一行
n<space> n表示数字,例如“20” 按下数字后在按空格,光标会移动到这一行的n个字符,例如20<space>,会在光标处向后移动20个字符距离
0 或【Home】 移动到这一行的最前面字符处
$ 或 【end】 移动到这一行的最后面字符处
H 光标移动到屏幕最上方那一行的第一个字符
M 光标移动到屏幕中央那一行的第一个字符
L 光标移动到屏幕最下方那一行的第一个字符
G 移动到这个文件的最后一行
nG 移动到这个文件的第n行
gg 移动到这个文件的第1行
N【Enter】 光标向下移动n行
查找与替换
/word 向下寻找一个文件名为word的字符串
?word 向下寻找一个文件名为word的字符串
n 重复前一个查找的操作
N 反向进行前一个查找的操作
:n1,n2s/word1/word2/g 在n1与n2行之间查找word1这个字符串并替换成word2
:1,$s/ word1/word2/g 在第一行与最后一行查找word1字符串并替换成word2
:1$s/word1/word2/g 在第一行与最后一行查找word1字符串并替换成word2,在替换前显示给用户确认(confirm)是否替换
删除,复制,粘贴
x X 在一行中,向后,向前删除一个字符
nx 向后删除n个字符
dd 删除光标所在的那一整行
ndd 删除光标向下的n行
d1G 删除光标所在到第一行的所有数据
dG 删除光标所在到最后一行的所有数据
d$ 删除光标所在到该行的最后一个字符
d0 删除光标所在到该行的最前面一个字符
yy 复制光标所在的那一行
nyy 复制光标所在的向下的n行
y1G 复制光标所在行到第一行的所有数据
yG 复制光标所在行到第最后一行的所有数据
y0 复制光标所在的那个字符到该行行首的所有数据
y$ 复制光标所在的那个字符到该行行尾的所有数据
pP p为将已复制的数据在光标的下一行粘贴, P为将已复制的数据在光标的上一行粘贴
移动光标的方法
J 将光标所在行与下一行的数据结合成同一行
c 重复删除多个数据,例如向下删除10行, 【10cj】
u 重复前一个操作
【Ctrl】+r 重做上一个操作
命令行保存,离开等命令
:w 将编辑的数据写入硬盘文件中
:w! 若文件属性v为只读时,强制写入该文件。不过到底能不能写入,还与你对该文件的权限有关。
:q 离开
:q! 若修改过文件又不想存储,强制离开并不保存
:ZZ 若文件没有更改。不保存离开,若更改过,则保存后离开
:r [file] 在编辑的数据中,读入另一个文件的数据,将file文件内容加到光标所在行后面
:w[file ] 将编辑的数据保存成另一个文件
:n1,n2 w [file] 将n1到n2的内容保存成file这个文件