vi
6.1 vi的三种模式
- 一般模式:执行删除字符,删除整行,复制粘贴。
- 编辑模式:通过a,i,o 进入编辑模式,esc退出。
- 指令模式:输入:,/,?进入指令模式,进行文件的保存,搜素,替换,退出等操作。
一般模式下可用的快捷键
按键 | 作用 | 备注 |
---|---|---|
h | 左移一个字符 | nh 左移n个字符 |
j | 下移一个字符 | 同上 |
k | 上移一个字符 | 同上 |
l | 右移一个字符 | 同上 |
ctrl+f | 屏幕向下翻一页 | 相当于Page Down |
ctrl+b | 屏幕向上翻一页 | 相当于Page Up |
ctrl+d | 屏幕向下翻半夜 | |
ctrl+u | 屏幕向上翻半夜 | |
+ | 移动到非空格符的下一列 | |
- | 移动到非空格符的上一列 | |
n + spce | n 代表数字。光标在当前行向右移动n个字符 | |
0 | 移动到这一行的最前面 | |
home | 移动到这一行的最前面 | |
$ | 移动到这一行的最后面 | |
end | 移动到这一行的最后面 | |
H | 移动到当前屏幕的最上方的第一行的第一个字符 | |
M | 移动到当前屏幕的中央的那一行的第一个字符 | |
L | 移动到这个屏幕的最下方的那一行的第一个字符 | |
G | 移动到这个文件的最后一行 | 常用 |
nG | n为数字。移动到这个文件的第n行 | |
gg | 移动到这个文件的第一行 | 常用 |
n+Entry | 向下移动n行 | |
/word | 向下寻找word字符串 | |
?word | 向上寻找word字符串 | |
n | 在查找字符串时,n代表下一个 | |
N | 代表上一个 | |
:n1,n2s/word1/word2/g | 在n1和n2行之间查找word1字符串,并替换为word2 | |
:1,$ s/word1/word2/g | 在第一行和最后一行之间查找word1字符串,并将其替换为word2 | |
:1,$ s/word1/word2/g | 功能同上,但是提示用户是否需要替换 | |
x | 在当前行,向后删除一个字符 | |
X | 在当前行,向前删除一个字符 | |
nx | n为数字,连续向后删除n个字符 | |
nX | n为数字,连续向前删除n个字符 | |
dd | 删除游标在的那一行 | |
ndd | 删除光标以下的n列 | |
d1G | 删除光标所在的行到第一行的内容 | |
dG | 删除光标到最后一行的内容 | |
d$ | 删除光标到所在行最后一个字符的内容 | |
d0 | 删除光标到所在行第一个字符的内容,包含第一个 | |
yy | 复制当前行 | |
nyy | 复制游标所在行往下n行 | |
y1G | 复制光标所在列到第一列癿所有数据 | |
yG | 复制光标所在列到最后一列癿所有数据 | |
y0 | 复制光标所在癿那个字符到该行行首癿所有数据 | |
y$ | 复制光标所在癿那个字符到该行行尾癿所有数据 | |
p | 将复制的内容粘贴到当前行之后 | |
P | 将复制的内容粘贴到当前行之前 | |
J | 将光标所在列与下一列的数据合并成一列 | |
c | 重复删除多个数据,例如向下删除 10 行,[ 10cj ] | |
u | 复原前一个动作 | |
ctrl + r | 重做上一个动作 | |
. | 重复上一个动作 |
一般模式进入插入模式
按键 | 作用 | 备注 |
---|---|---|
i | 从目前光标所在处插入 | |
I | 所在行的第一个非空字符处插入 | |
a | 光标所在位置下一个字符开始插入 | |
A | 光标所在行的最后一个字符开始插入 | |
o | 光标所在行的下一行开始插入 | |
O | 光标所在行的上一行开始插入 | |
r | 取代光标所在位置字符一次 | |
R | 取代光标所在位置多次 |
存储离开命令
按键 | 作用 | 备注 |
---|---|---|
:w | 保存 | |
:w! | 强制保存 | |
:q | 离开 | |
:q! | 强制 | |
:wq | 保存并离开 | |
ZZ | 文件没有改动,则不离开,有改动则保存后退出 | |
:w filename | 将文件保存到另一个文件 | |
:r filename | 将另一个文件的内容读取进来 | |
:n1,n2 w filename | 将n1到n2行的内容存储到filename中 | |
:! command | 在vi下执行command | 例如 :! ls 查看当前目录下的文件 |
:set nu | 显示行号 | |
:set nonu | 不显示行号 |
整理自鸟哥