常用的vi命令总结[转载]
转载地址
精华
说明:以下黑色为vi和vim均有的一般功能,而红色为Vim(Vi Improved)所特有功能。Vim一般的Unix和Linux下均有安装。
- 三种状态
Command
: 任何输入都会作为编辑命令,而不会出现在屏幕上,任何输入都引起立即反映
Insert
: 任何输入的数据都置于编辑寄存器,按ESC,可跳回command方式
Escape
: 以“:”或者“/”为前导的指令,出现在屏幕的最下一行,任何输入都被当成特别指令。 - 离开vi
:q!
离开vi,并放弃刚在缓冲区内编辑的内容。
:wq
将缓冲区内的资料写入磁盘中,并离开vi。
:x
同wq。
(注意—— :X 是文件加密,一定要与:x存盘退出相区别)
-
进入输入模式
a
(append) 由游标之后加入资料。
A
由该行之末加入资料。
i
(insert) 由游标之前加入资料。
I
由该行之首加入资料。
o
(open) 新增一行於该行之下供输入资料之用。
O
新增一行於该行之上供输入资料之用。
-
删除与修改
x
删除游标所在该字元。
X
删除游标所在之前一字元。
r
用接於此指令之后的字元取代(replace)游标所在字元。如:ra将游标所在字元以 a 取代之。
R
进入取代状态,直到《ESC》为止。
s
删除游标所在之字元,并进入输入模式直到《ESC》。
S
删除游标所在之该行资料,并进入输入模式直到《ESC》。
-
光标的移动
m<a-z>
设置书签
‘<a-z>
移至书签处
0
移至该行之首
$
移至该行之末。
e
移动到下个字的最後一个字母
w
移动到下个字的第一个字母。
b
移动到上个字的第一个字母。
^
移至该行的第一个字元处。
H
移至视窗的第一行。
M
移至视窗的中间那行。
L
移至视窗的最后一行。
G
移至该文件的最后一行。
+
移至下一列的第一个字元处。
-
移至上一列的第一个字元处。
:n
移至该文件的第 n 列。
n+
移至游标所在位置之后的第 n 列。
n-
移至游标所在位置之前的第 n 列。
<Ctrl><g>
显示该行之行号、文件名称、文件中最末行之行号、游标所在行号占总行号之百分比。
(Vim) 光标移动基本用法小解:
-
小写的移动
ge
b
w
e
←
←
---→
--→
-
大写的移动
←-
←--
-----------------→
---→
GE
B
W
E
-
选中
在normal模式下
keys
效果
v+i+w
放在一个单词的任意位置时均可选中本单词
v+e
光标放在一个单词的开头时可选中本单词
v+h/j/k/l
进入视图模式后使用方向键容易选中你想选的部分 -
视窗的移动
<Ctrl><f>
视窗往下卷一页。
<Ctrl><b>
视窗往上卷一页。
<Ctrl><d>
视窗往下卷半页。
<Ctrl><u>
视窗往上卷半页。
<Ctrl><e>
视窗往下卷一行。
<Ctrl><y>
视窗往上卷一行。 -
剪切、复制、删除
Operator + Scope = command
-
Operator
d
剪切
y
复制。
p
粘帖,与 d 和 y 配和使用。可将最后d或y的资料放置於游标所在位置之行列下。
c
修改,类似delete与insert的组和。删除一个字组、句子等之资料,并插入新建资料。 -
Scope
e
由游标所在位置至该字串的最后一个字元。
w
由游标所在位置至下一个字串的第一个字元。
b
由游标所在位置至前一个字串的第一个字元。
$
由游标所在位置至该行的最后一个字元。
0
由游标所在位置至该行的第一个字元。 -
整行动作
dd
删除整行。
D
以行为单位,删除游标后之所有字元。
cc
修改整行的内容。
yy
使游标所在该行复制到记忆体缓冲区。 -
取消前一动作(Undo)
u
恢复最后一个指令之前的结果。
U
恢复游标该行之所有改变。
(vim) u
可以多次撤消指令,一次撤消一个操作,直至本次操作开始为止。
(vim) Ctrl+r
可以恢复撤消前内容,按多次可恢复多次。 -
查找与替换
/字串
往游标之后寻找该字串。
?字串
往游标之前寻找该字串。
n
往下继续寻找下一个相同的字串。
N
往上继续寻找下一个相同的字串。
%
查找“(”,“)”,“{”,“}”的配对符。
s
搜寻某行列范围。
g
搜寻整个编辑缓冲区的资料。
:1,$s/old/new/g
将文件中所有的『old』改成『new』。
:10,20s/^/ /
将第10行至第20行资料的最前面插入5个空白。
(vim) /字符串
后边输入查询内容可保存至缓冲区中,可用↑↓进行以往内容选择。
另外:将光标移动在选定单词下方按*,则可以选中此单词作为查询字符,可以避免输入一长串字符的麻烦。 -
(vim) 大小写替换
首先用按v开启选择功能,然后用↑↓←→键来选定所要替换的字符,若是小写变大写,则按U;反之按u;
如果是选择单词,则可以在按v后,按w,最后按U/u,这样就可以将字符随意的改变大小写了,而不用删除后重新敲入。 -
资料的连接
J
句子的连接。将游标所在之下一行连接至游标该行的后面。 -
环境的设定
:set all
可设置的环境变量列表
:set
环境变量的当前值
:set nu
设定资料的行号。
:set nonu
取消行号设定。
:set ai
自动内缩。
:set noai
取消自动内缩。
(vim) :set ruler
会在屏幕右下角显示当前光标所处位置,并随光移动而改变,占用屏幕空间较小,使用也比较方便,推荐使用。
:set hlsearch
在使用查找功能时,会高亮显示所有匹配的内容。
:set nohlsearch
关闭此功能。
:set incsearch
使Vim在输入字符串的过程中,光标就可定位显示匹配点。
:set nowrapscan
关闭查找自动回环功能,即查找到文件结尾处,结束查找;默认状态是自动回环 -
ex指令
-
读写资料
:10,20w test
将第10行至第20行的资料写入test文件。
:10,20w>>test
将第10行至第20行的资料加在test文件之后。
:r test
将test文件的资料读入编辑缓冲区的最后。
:e [filename]
编辑新的文件。
:e! [filename]
放弃当前修改的文件,编辑新的文件。
:sh
进入shell环境,使用exit退出,回到编辑器中。
:!cmd
运行命令cmd后,返回到编辑器中。 -
删除、复制及搬移
:10,20d
删除第10行至第20行的资料。
:10d
删除第10行的资料。
:%d
删除整个编辑缓冲区。
:10,20co30
将第10行至第20行的资料复制至第30行之后。
:10,20mo30
将第10行至第20行的资料搬移至第30行之后。