对于VI的命令行,不需要特意的去记忆,写下来,让要用到的时候能找到就行
游标控制
h | 游标向左移 |
j | 游标向下移 |
k | 游标向上移 |
l (or spacebar) | 游标向右移 |
w | 向前移动一个单词 |
b | 向后移动一个单词 |
e | 向前移动一个单词,且游标指向单词的末尾 |
( | 移到当前句子的首部 |
) | 移到下一个句子的首部 |
{ | 移到当前段的首部 |
} | 移到下一段的首部 |
[[ | 移到当前区段的首部 |
]] | 移到下一个区段的首部 |
0 | 移到当前行的首部 |
$ | 移到当前行的尾部 |
^ | 移到当前行第一个非空白字符的地方 |
+ or RETURN | 移动到下一行的第一个字符 |
- | 移动到上一行的第一个字符 |
n | | 移动到当前行的字符n的地方 |
H | 移动到当前屏幕的首部 |
M | 移动到当前屏幕的中部 |
L | 移动到当前屏幕的尾部 |
nH | 移动到当前屏幕首部下的n行 |
nL | 移动到当前屏幕尾部上的n行 |
Ctrl-F | 移动到下一屏 |
Ctrl-B | 移动到上一屏 |
Ctrl-D | 向下移动半屏 |
Ctrl-U | 向上移动半屏 |
| |
| |
z RETURN | 刷新屏幕,调整屏幕,使当前的游标在刷新后的屏幕的首部(是不是不明白???不明白的话,试试就知道是什么意思了) |
z . | 刷新屏幕,调整屏幕,使当前的游标在刷新后的屏幕的中部 |
z - | 刷新屏幕,调整屏幕,使当前的游标在刷新后的屏幕的尾部 |
Ctrl-L | 刷新屏幕,不调整屏幕位置 |
Ctrl-R | 刷新屏幕,不调整屏幕位置 |
/text | 向下搜索text |
/ | 重复上次的搜索的内容向下搜索一次 |
?text | 向上搜索text |
? | 重复上此搜索的内容向上搜索一次 |
n | 重复上此的搜索,向下搜索 |
N | 重复上此的搜索,向上搜索 |
/text/+n | 移动到text所在行的下面n行 |
?text?-n | 移动到text所在行的上面n行 |
| |
| |
nG | 移动到n行 |
:n | 移动到n行 |
G | 移动在最后一行 |
内容编辑
A:当前行的尾部追加内容
i:游标前插入内容
I:游标后插入内容
o:在鼠标所在行的下面添加内容
O:在鼠标所在行的上面添加内容
ESC:退出编辑模式
Ctrl-T:移动到下一个tab
Backspace:向后移动一个字符
Ctrl-U:删除当前
cw:删除游标所在的字符,然后进入编辑模式
cc:删除游标所在的行,然后进入编辑模式
C:删除从游标所在的位置到行尾的字符,然后进入编辑模式
dd:删除当前行
ndd:删除第n行
D:删除当前行游标所在的位置后面的字符
dw:删除邮编所在的字符
d}:删除当前段剩余的字符
d^:删除游标前到行首的字符
c/pat:删除游标后面到第一次匹配字符间的内容
dn:删除游标后面到下一个匹配字符间的内容
dfa:删除当前行游标到匹配字符间的内容(匹配的字符也将被删)
dta:删除当前行游标到匹配字符间的内容(匹配的字符不被删)
dL:删除从游标到屏幕的最后一行之间的内容
dG:删除从游标到文件末尾之间的内容
J:连结上下两行的内容
p:在游标后面插入buffer中的内容
P:在游标前面插入buffer中的内容
rx:用x替换字符
Rtext:用text从游标开始处进行替换
u:撤销最后的改变
U:还原当前行的内容
x:向后删除游标所在位置的字符
X:向前删除游标前面的字符
nX:删除前面的n个字符,游标所在的字符将不会被删
.:还原最后的改变
~:反转字母的大小写
y:拷贝当前行到新的buffer
yy:拷贝当前行
"xyy:拷贝当前行的buffer名为x的buffer
ye:拷贝当单词的末尾
文件操作
:w | 写文件 | | |
:w! | 写文件,忽略警告信息 | ||
:w! file | 覆盖文件,忽略警告信息 | ||
:wq | 写文件之后退出编辑 | ||
:q | 退出编辑器 | ||
:q! | 强制退出编辑器 | ||
:w file | 把文件的内容写到另一个文件 | ||
ZZ | 退出编辑器,如果文件有改动,则保存再退出 | ||
:x | 退出编辑器,如果文件有改动,则保存再退出 | ||
:n1,n2w file | 把n1行到n2行间的内容写到文件file | ||
:n1,n2w >> file | 把n1行到n2行间的内容追加到文件file | ||
:e file2 | 在当前文件的命令行模式下编辑file2 | ||
:e! | 重新从磁盘加载文件 | ||
:e# | 交替编辑文件 | ||
| | ||
| | ||
:n | 编辑地下一行 | ||
:n! | 编辑地下一行(忽略警告) | ||
| | ||
:r file | 在游标后面插入文件 | ||
:r !command | 在当前行的后面,插入运行命令后的输出内容 |
在Linux下,可以键入vimtutor命令,有一个包含实操的vim教程。
1.VI的三种命令模式
1)Command(命令)模式,用于输入命令;
2)Insert(插入)模式,用于插入文本;
3)Visual(可视)模式,用于视化的的高亮并选定正文;
2.文件的保存和退出
2.1):w 保存;
2.2):w filename 另存为filename;
2.3):wq! 保存退出;
2.4):wq! filename 注:以filename为文件名保存后退出;
2.5):q! 不保存退出;
2.6):x 应该是保存并退出 ,功能和:wq!相同
3.光标移动
3.1)j 向下移动一行;
3.2)k 向上移动一行;
3.3)h 向左移动一个字符;
3.4)l 向右移动一个字符;
3.5)ctrl+b 向上移动一屏;
3.6)ctrl+f 向下移动一屏;
3.7)向上箭头 向上移动;
3.8)向下箭头 向下移动;
3.9)向左箭头 向左移动;
3.10)向右箭头 向右移动;
3.11)$ 移至行尾
3.12)gg 移动至文档开始
3.13)GG 移动到文档尾部
3.14)ctrl + f 向前翻页
3.15)ctrl + b 向后翻页
4.插入模式
4.1)i 在光标之前插入;
4.2)a 在光标之后插入;
4.3)I 在光标所在行的行首插入;
4.4)A 在光标所在行的行末插入;
4.5)O 在光标所在的行的上面插入一行;
4.6)o 在光标所在的行的下面插入一行;
4.7)s 删除光标后的一个字符,然后进入插入模式;
4.8)S 删除光标所在的行,然后进入插入模式;
5.文本内容的删除
5.1)x 一个字符;
5.2)#x 删除几个字符,#表示数字,比如3x;
5.3)dw 删除一个单词;
5.4)#dw 删除几个单词,#用数字表示,比如3dw表示删除三个单词;
5.5)dd 删除一行;
5.6)#dd 删除多个行,#代表数字,比如3dd 表示删除光标行及光标的下两行;
5.7)d$ 删除光标到行尾的内容;
5.8)J 清除光标所处的行与上一行之间的空格,把光标行和上一行接在一起;
6.恢复修改及恢复删除
6.1)u 撤消修改或删除操作;
7.可视模式
可视模式是vim提供的,vi没有可视模式,如果我们想键入vi ***.txt时调用vim,则可以输入以下命令:
echo alias vi=vim >> /etc/profile
下次登录后,使用vi命令打开文件就直接调用vim了
8.复制及粘帖
8.1)yy 复制当前行
8.2)#yy 复制多行,#用数字表示,比如3yy表示复制三行;
8.3)如果在可视模式下,y可以复制选定的内容
8.4)p在光标之后粘帖
8.5) shift + p 在光标之前粘帖
9.查找和替换
9.1)/SEARCH 注:正向查找,按n键把光标移动到下一个符合条件的地方;
9.2)?SEARCH 注:反向查找,按shift+n 键,把光标移动到下一个符合条件的
9.3):s /SEARCH/REPLACE/g 注:把当前光标所处的行中的SEARCH单词,替换成REPLACE,并把所有SEARCH高亮显示;
9.4):%s /SEARCH/REPLACE 注:把文档中所有SEARCH替换成REPLACE;
9.5):#,# s /SEARCH/REPLACE/g 注:#号表示数字,表示从多少行到多少行,把SEARCH替换成REPLACE;