-
进入
vi
的命令
p>
.
.............................
..................................................
..................................
1
移动光标类命令
.
< br>............................................... .................................................. .............
1
屏幕翻滚类命令
.
< br>............................................... .................................................. .............
2
编辑插入文本类命令
.
.............................................
..................................................
.......
3
删除命令
.
..................................................
..................................................
......................
5
搜索及替换命令
.
< br>............................................... .................................................. .............
6
选项设置
.
..................................................
..................................................
......................
8
组合命令
.
..................................................
..................................................
....................
1
0
最后行方式命令
.
< br>............................................... .................................................. ...........
1
4
寄存器操作
.
.................................................
..................................................
.................
1
5
进入
vi
的
命令
vi filename
:
打开或新建文件,并将光标置于第一行首
vi +n filename
:
打开文件,并将光标置于第
n
行首
vi + filename
:打开文件,并将光标置于最后一行首
vi +/pattern filename
:打开文件,并将光标置于第一个与
pattern
匹配的串处
vi -r
filename
:在上次正用
vi
编辑时发生系统崩溃,恢复
filename
vi filename....filename
:打开多个文件,依次进行编辑
移动光标类命令
h
:光标左移一个字符
l
:光标右移一个字符
space
:光标右移一个字符
Backspace
:光标左移一个
字符
k
或
Ctrl+p
:光标上移一行
j
或
Ctrl+n
:光标下移一行
Enter
:光标下移一行
w
或
W
:光标右移一个字至字首
b
或
B
:光标左移一个字至字首
e
或
E
:光标右移一个字至字尾
)
:光标移至句尾
(
:光标移至句首
}
:光标移至段落开头
{
:光标移至段落结尾
nG<
/p>
:光标移至第
n
行首
n+
:光标下移
n
行
< br>n-
:光标上移
n
行
n$$
:光标移至第<
/p>
n
行尾
H
:光标移至屏幕顶行
M
:光标移至屏幕中间行
L
:光标移至屏幕最后行
0
:
(注意
是数字零)光标移至当前行首
$$
:光标移至当前行尾
^
光标移到行首
f
光标移到当前光标位置后面的第一个指定的字符下
F
光标移到当前光标位置前面的第一个指定的字符下
t
光标移到当前光标位置后面的第一个指定的字符前
T
光标移到当前光标位置前面的第一个指定的字符前
%
光标移动到与当前括号匹配的括号处
:n
光标移动到指定行
按数字:
0
:移到文章的开头。
按
G
:移动到文章的最后。
按
w
:光标跳到下个字的开头
p>
按
e
:光标跳到下个字的字尾
按
b
< br>:光标回到上个字的开头
按
:
#l
:光标移到该行的第
#
个位置,如:
5l,56l
。
< br>
跳至指定的行
Ctrl +
g
列出光标所在行的行号。
#G
:例如,
15G
,表示移动光标至文章的第
15
行行首
14.
光标控制
k:
上移
nk
上移
n
行
j:
下移
nj
下移
n
行
<
/p>
将光标移到第
n
行,按下
mk
将光标移到第
m
p>
行,按下
即将第
n
到
m
的行存
到
a
寄存器,以此类推,
b
,
c........
寄存器等
< br>
屏幕翻滚类命令
Ctrl+u
:向文件首翻半屏
Ctrl+d
:向文件尾翻半屏
Ctrl+f
:向文件尾翻一屏
Ctrl
+
b
;向文件首翻一屏
nz
:将第
n
行滚至屏幕顶
部,不指定
n
时将当前行滚至屏幕顶部。
zz
将当前行置于屏幕中央
zt
将当前行置于屏幕顶端
zb
将当前行置于屏幕底端
编辑插入文本类命令
i
:在光标前
I
:在当前行首
a
:光标后
A
:在当前行尾
o
:在当前行之下新开一行
O
:在当前行之上新开一行
r
:替换当前字符
R
:替换当前字符及其后的字符,直
至按
ESC
键
s
:从当前光标位置处开始,以输入
的文本替代指定数目的字符
S
p>
:删除指定数目的行,并以所输入文本代替之
ncw
或
n
CW
:修改指定数目的字
nCC
:修改指定数目的行
J
删除换行符
u
取消上次操作
ctr-R
重做
c
修改指定的内容,和
d
相似
p
将删除缓冲区中的内容插入光标当前的位置
y
复制
vi a b c
:n
跳至下一个文件,
:e#
回到刚才编辑的文件。<
/p>
比如当前编辑文件为
a
,
:n
跳至
b,
再
:n
跳至
c,:e#
p>
回到
b,
想回到
a
的话用
:ea
打开一个
,vi
文件名
然后在
vi
的命令输入状态下输入
:sp
另外一个文件的路径及文件名
如此就可以在一个窗口打开
3
个文件了。
可以使用
ctrl
+
两次按
w
在
3
个文
件中切换
:edit
编辑一个新的文件
:previous
打开文件列表中的前一个文件
:next
打开文件列表中的后一个文件
:args
指定一个文件列表
:saveas
给文件改名
:file
给正在编辑的文件改名,但不保存
:split
将窗口分成上下两个窗口
:vsplit
将窗口分成左右两个窗口
:split
文件
为制定的文件打开新窗口
:new
打开新窗口,以及一个无名的缓冲区
:close
关闭窗口
ctr-w w
切换窗口
ctr-w [hjkl]
切换到窗口
ctr-w
[HJKL]
移动窗口
:only
只保存当前窗口,其他窗口关闭
ctw-w +
增加当前窗口高度
ctw-w -
减小当前窗口高度
:qall
所有的窗口都退出
:wall
所有的窗口内容都写入文件
取消上一命令(
Undo
)
< br>
重复命令(
Redo
)
重复命令只能
在命令模式下工作,在该模式下按“
.
”键既可。执行一个重复
命令时,其结
果是依赖于光标当前位置的。
取消上一命令(
Undo
)
重复命令(
Redo
)
p>
重复命令只能在命令模式下工作,在该模式下按“
.
”键既可。执行一个重复命令时,其结
果是依赖于光标当前位置的。
fx
往右移动到
x
字元上
Fx
往左移动到
x
字元上
tx
往右移动到
x
字元前
Tx
往左移动到
x
字元前
;
配合
f&t
使用,重复一次
,
配合
f&t
使用,反方向重复一次
/string
往右移动到有
string
的地方
?string
往左移动到有
string
的地方
n
配合
/&?
使用,重复一次
N
配合
/&?
使用,反方向重复一次
d
删除
(delete)
y
复制
(yank)
p
放置
(put)
c
修改
(change)
x
删除光标下的字符(
的缩写)
X
删除光标前的字符(
的缩写)
D
从当前位置删除到行尾(
的缩写)
dw
从当前位置删除到下一个单词开头
db
从当前位置删除到前一个单词的开头
diw
删除光标上的单词(不包括空白字符)
daw
删除光标上的单词(包括空白字符)
dG
删除到文末
dgg
删除到文首
如果你用
代替
,这会变成修改命令;而改用
,则变成拷贝命令
「
cw
」<
/p>
:更改光标所在处的字到字尾处
p>
「
c#w
」
:例如
,
「
c3w
」表示更改
3
个字
复制
「<
/p>
yw
」
:将光标所在之处到字尾的字符复
制到缓冲区中。
「
#yw
」
:复制
#
个字到缓冲区
「
p>
yy
」
:复制光标所在行到缓冲区。
「
#yy
」
:例如,
「
6yy
」表示拷贝从光标所在的该行“往下数”
6
行文字。
「
< br>p
」
:将缓冲区内的字符贴到光标所在位置。注意:所有
与“
y
”有关的复制命令都必须与
“<
/p>
p
”配合才能完成复制与粘贴功能。
daB
删除
{}
及其内的内容
(
在非
v
可视模式下
)
diB
删除
{}
中的内容
ab
选择
()
中的内容
ib
选择
()
中的内容
(
不含
() )
aB
选择
{}
中的内容
iB
选择
{}
中的内容
(
不含
{} )
·
变量定位
gd
转到光标下局部变量的定义处
Gd
转到光标下全局变量的定义处
:r filename
将文件
filename
插入在当前行之下
复制与剪切
xp
交换前后两个字符的位置
ddp
上下两行的位置交换
:g/fred/t$$
拷贝行,从
f
red
到文件末尾
(EOF)
删除命令
ndw
或
ndW
:删除光标处开始及其后的
n-1
个字
do
:删至行首
d$$
:删至行尾
ndd
:删除当前行及其后
n-1
行
x
或
X
:删除一个字符
,
x
删除光标后的,而
X
删除光标前的
Ctrl
+u
:删除输入方式下所输入的文本
u
撤消前一条命令的结果
.
重复最后一条修改正文的命令
搜索及替换命令
/pattern<
/p>
:从光标开始处向文件尾搜索
pattern
?pattern
:从光标开始处向
文件首搜索
pattern
n
:在同一方向重复上一次搜索命令
N
:在反方向上重复上一次搜索命令
:
s/p1/p2/g
:将当前行中所有
p1
均用
p2
替代
:
n1,n2s/p1/p2/g
:将第
n1
至
n2
行中所有
p1
均用
p2
替代
:
g/p1/s//
p2/g
:将文件中所有
p1
均用
p>
p2
替换
/
向后搜索
?
向前搜索
``
跳转到前一个位置
`a
跳转到标记为
a
的位置
ma
将光标的当前位置标记为
a
`[
跳转到最后一次修改的起始位置
`]
跳转到最后一次修改的结束位置
`
跳转到上次编辑该文件时光标最后停留的位置
:s
替换
:substitute
替换
:%s/a/a/c
对所有行替换
:m,ns/a/a/c
对从
m
p>
到
n
行替换
rc
用
c
替换光标所指向的当前字符
nrc
用
c
替换光标所指向的前
n
个字符
5rc
用
c
替换光标所指向的前
5
个字符
x
删除光标所指向的当前字符
nx
删除光标所指向的前
n
个字符
3x
删除光标所指向的前
3
个字符
dw
删除光标右侧的字
ndw
删除光标右侧的
n
个字
3dw
删除光标右侧的
3
个字
db
删除光标左侧的字
ndb
删除光标左侧的
n
个字
5db
删除光标左侧的
5
个字
dd
删除光标所在行,并去除空隙
ndd
删除
n
行内容,并去除空隙
3dd
删除
3
行内容,并去除空隙
从正文中删除的内容(如字符、字或行)并没有真正丢失,而是被剪切并复制到了一个
内存缓冲区中。用户可
将其粘贴到正文中的指定位置。完成这一操作的命令是:
p
小写字母
p
,将缓冲区的内容粘贴到光标的后面
P
大写字母
P
,将缓冲区的内容粘贴到光标的前面
yy
复制当前行到内存缓冲区
nyy
复制
n
行内容到内存缓冲区
5yy
复制
5
行内容到内存缓冲区
/str1
正向搜索字符串
str1
n
继续搜索,找出
str1
字符串下次出现的位置
?str2
反向搜索字符串
str2
给出一个字符串,可以通过搜索该字符串到达指定行。如果希
望进行正向搜索,将待搜
索的字符串置于两个“
/
”之间;如果希望反向搜索,则将字符串放在两个“
?
”之间。例如:
:/str/
正向搜索,将光标移到下一个包含字符串
str
的行
:?str?
反向搜索,将光标移到上一个包含字符串
str
的行
:/str/w file
正向搜索,并将第一个包含字符串
str
的行写入
file
文件
:/str1/,/str2/w file
正向搜索,并将包含字符串
str1
的行至包含字符串
s
tr2
的行写
正文替换
利用
:s
命令可以实现字符串的替换。具体的用法包括:
:s/str1/str2/
用字符串
str2
替换行中首次出现的字符串
str1
:s/str1/str2/g
用字符串
str2
替换行中所有出现的字符串
str1
:.,$$ s/str1/str2/g
用字符串
str2
替换正文当前行到末尾所有出现的字符串
str1
:1,$$ s/str1/str2/g
用字符串
str2
替换正文中所有出现的字符串
str1
:g/str1/s//str2/g
功能同上
从上述替换命令可以看到:
g
放在命令末尾,表示对搜索字符串的每次出现进行替换;
不加
g
,表示只对搜索
字符串的首次出现进行替换;
g
放在命令开头,表示对正文中所有包含搜索字符串的行
进行替换操作。
< br>:
s/p1/p2/g
:将当前行中所有
p1
均用
p2
替代
:
n1,n2s/p
1/p2/g
:将第
n1
至
n2
行中所有
p1
均用<
/p>
p2
替代
:%s/old_word/new_word/g
这个指令是于在整个文件中替换特定字符串
字串搜寻与取代
s(substit
ute)
指令可搜寻某行列范围。
g
(global)
指令则可搜寻整个编辑缓冲区的资料。
p>
s
指令以第一个满足该条件的字串为其取代的对象,若该行有数个满
足该条
件的字串,也仅能取代第一个,若想取代所有的字串则
需加上
g
参数。
7)
查找替换
/
把狭义单词
写到
搜索命令
行
/
把广义单词
写到
搜索命令
行
:g/str/s/str1/str2/g
第一个
g
表
示对每一个包括
s1
的行都进行替换,
第二个
g
表
示对每一行的所有进行替换
包括<
/p>
str
的行所有的
str1
都用
str2
替换
:%s/f $$/for$$/g
将每一行尾部的“
f
”
(
f
键和空格键)替换为
f
or
:%s/^/mv /g
在每一行的头部添加“
mv
”
(
mv
键和空格键)
:s/fred/
替换
fred
成
register
a
中的内容,呵呵
:g/
显示含
或