Vi三种模式:
1. 一般模式;
以vi/vim打开一个档案就直接进入一般模式,典型特征就是你可以用【上下左右】按
来移动光标。可以进行删除、复制、贴上等动作。
2. 编辑模式;
ioarIOAR 进入编辑模式,在画面左下角出现【INSERT或REPLACE】的字样,如果想回到一般模式,按下【ESC】退出编辑模式;
3. 指令列命令模式;
在一般模式当中,输入【: / ?】三个中的任何一个按钮,就可以将光标移动到最底下
那一行。
常用命令:
模式 | 分类 | 指令 | 功能 | 扩展 |
|
一 般 模 式 | 光标移动 | h | 向左 | 10h(向左10个位置) |
|
l | 向右 | 同上 |
| ||
j | 向下 | 10j(向下10个位置) |
| ||
k | 向上 | 同上 |
| ||
[Ctrl]+f | 向下移动一页 |
|
| ||
[Ctrl]+d | 向下移动半页 |
|
| ||
[Ctrl]+b | 向上移动一页 |
|
| ||
[Ctrl]+u | 向上移动半页 |
|
| ||
+ | 光标移动到非空格符的下一列 |
|
| ||
- | 光标移动到非空格符的上一列 |
|
| ||
数字(n)+空格 | 光标向右移动N位 |
|
| ||
0或者功能键home | 移到行首 |
|
| ||
$或者End | 移到行尾 |
|
| ||
H | 光标移动到这个屏幕最上方那一行的第一个字符 |
|
| ||
M | 光标移动到这个屏幕中央那一行的第一个字符 |
|
| ||
L | 光标移动到这个屏幕最下方那一行的第一个字符 |
|
| ||
G | 移动到这个档案的最后一行 | nG(移动到第n行) |
| ||
gg | 移动到这个档案的第一行 |
|
| ||
数字(n)+回车键 | 光标向下移动N行 |
|
| ||
搜寻与取代 | /word | 在光标之下找一个Word的字符串 |
|
| |
?word | 在光标之上找一个Word的字符串 |
|
| ||
n | 重复前一个搜寻的动作 |
|
| ||
N | 反向重复前一个搜寻的动作 |
|
| ||
:n1,n2s/word1/word2/g | 在n1行和n2行之间寻找Word1这个字符串,并将Word1替换成Word2 |
|
| ||
:1,$s/word1/word2/g | 在全文之间寻找Word1这个字符串,并将Word1替换成Word2 |
|
| ||
编 辑 模 式 | 删除 | x,X | x相当于[del]键,向后删除一个字符,X向前删除一个字符,相当于[backspace] | nx(向后删除n个字符) |
|
dd | 删除一整行 |
|
| ||
ndd | 删除光标所在向下n行。 |
|
| ||
d1G | 删除光标所在行到第一行的所有数据 |
|
| ||
dG | 删除光标所在行到最后行的所有数据 |
|
| ||
d$ | 删除光标所在处该行的最后一个字符 |
|
| ||
d0 | 删除光标所在处该行的最前面一个字符 |
|
| ||
yy | 复制所在那一行 |
|
| ||
nyy | 复制光标所在行向下n行 |
|
| ||
y1G | 复制光标所在行到第一行所有数据 |
|
| ||
yG | 复制光标所在行到最后一行所有数据 |
|
| ||
y0 | 复制光标所在处该行的最前面一个字符 |
|
| ||
y$ | 复制光标所在处该行的最后一个字符 |
|
| ||
p,P | p将一复制的数据在光标下一行贴上,P在光标上一行贴上。 |
|
| ||
J | 将光标所在行与下一行的数据结合成同一行 |
|
| ||
[Ctrl]+r | 重做上一个动作 |
|
| ||
. | 重复上一个动作 |
|
| ||
u | 复原 |
|
| ||
进入插入模式 | i | 在光标字符前插入 |
|
| |
I | 在所在行第一个非空字符插入 |
|
| ||
a | 在光标字符后插入 |
|
| ||
A | 在所在行最后一个字符插入 |
|
| ||
o | 在光标所在行的下一行出插入 |
|
| ||
O | 在光标所在行的上一行出插入 |
|
| ||
进去取代模式 | r | 取代光标所在字符 |
|
| |
R | 一直取代光标所在文字,知道按下esc为止 |
|
| ||
退出编辑模式 | [esc] | 退出编辑模式 |
|
| |
指 令 模 式 | 指令列的储存 | :w | 保存 |
|
|
:w! | 强制保存 |
|
| ||
:q | 离开 |
|
| ||
:q! | 不保存强制离开 |
|
| ||
:wq | 保存后离开 |
|
| ||
:wq! | 强制保存后离开 |
|
| ||
ZZ | 保存后离开 |
|
| ||
:w[filename] | 另存为filename文件 |
|
| ||
:r[filename] | 在编辑的内容存储到另一个filename的档案中 |
|
| ||
:n1,n2 w[filename] | 将n1到n2的内容存储到filename的档案中 |
|
| ||
:!command | 暂时离开vi到指令模式下执行command的显示结果(:!command ls /bin) |
|
| ||
行号显示 | :set nu | 显示行号 |
|
| |
:set nonu | 取消行号 |
|
|