vi分为三种模式,分别是 一般指令模式、编辑模式、指令列命令模式。
从终端使用vi打开文本文件(如果打开的文件不存在,vi会自动建立这个文件)默认进入一般指令模式。
按【i,I,o,O,a,A,r,R】任何一个字母进入编辑模式。
按ESC退出编辑模式进入一般指令模式。
按Ctrl + 【;】 进入指令列命令模式。
一般指令模式下的快捷键(注意区分大小写):
[Ctrl] + [f] : 屏幕向下移动一页
[Ctrl] + [b] : 屏幕向上移动一页
0 或 Home : 移动到这一列的最前面字符处
$ 或 End : 移动到这一列的最后面字符处
G : 移动到这个文件的最后一列
nG : 移动到文件的第n列
gg : 移动到这个文件的第一列
x,X : x为向后删除一个字符,X为向前删除一个字符
dd : 删除光标所在的那一整列
ndd : 删除光标所在的向下n列
yy : 复制光标所在的那一列
nyy : 复制光标所在的向下n列
p : 将已复制的数据在光标的下一列贴出
P : 将已复制的数据在光标的上一列贴出
在指令列命令模式中(一般指令模式下按Ctrl + [ ; ] 进入指令列命令模式,在最下方显示 :代表进入指令列命令模式)
w : 保存
q : 退出
! : 强制退出
wq : 保存并退出
w! : 若文件属性为[只读]上,强制写入该文件
q! : 不保存强制退出
set nu : 显示行号
set nonu: 取消行号
w[filename] : 将编辑的数据储存成另一个文件,类似于另存为
r[filename] : 在编辑的数据中,读入另一个文件的数据
n1,n2 w[filename] :将n1到n2的内容储存成filename这个文件
区块选择:在一般指令模式下进行。
在windowns上的文本编辑,只能进行”行“的复制,不能进行列的复制,但是vim可以进行列的复制。
1、把光标移动到目标列,按Ctrl+v这时界面窗口左下方会出现“可视 块”代表可以进行块操作了。
2、移动光标选择需要复制的块。
3、按y复制块,然后把光标移动到需要粘贴的位置,按p进行粘贴。也可以按d将选中的块删除。
例如:
将下面文本中的host1~host9这五列粘贴到文本的net的后面
1、将光标移动到第一行的h处,按Ctrl+v进入可视块
2、移动光标选择需要复制的块(只能用键盘移动)
3、按y复制,移动光标到粘贴位置,按p粘贴