红联Linux门户
Linux帮助

使用Vi编辑器

发布时间:2005-05-05 15:28:07来源:红联作者:非你不要
Vi 自产生以来,历经不断革新,现在最新版的 Vi 已经具有很强大的功能,使用户能够更加轻松、
便捷地使用它。

6.1 vi的工作模式

6.1.1 命令模式

开始进入 Vi 时处于命令模式,如果已经处于插入模式或末行模式,按 键可以回到命令
模式。在这种模式下,只能用按键指令,不能输入文字。

6.1.2 插入模式
插入模式就是要把文本插入到要编辑的文件,插入位置根据所用的命令不同而不同。从命令模式
进入插入模式需要键入 i、a、o、r 及 I、A、O、R 等命令。在完成文本的输入后,必须用 键返回命令模式。

6.1.3 末行模式
末行模式因命令出现在屏幕的最底部一行而得名。在命令方式下,键入某些特殊字符,如 /、?、:
等,光标跳到屏幕末行并显示键入的末行字符,此时键入命令后回车,vi 会根据需要在末行显示出一定的响应信息,同时将自动回到命令状态。

6.2 Vi编辑文件的基本过程
在命令行键入 vi testfile,其中 testfile 代表要打开的文件名,如果文件不存在,vi将自动新建
一个名为 testfile 文件。
进入 vi 后,按 i 进入插入模式,就可以编写文件了,光标可以由方向键来移动。 键可以删去前一个字符。
如果已写好文件,就可以按 回到命令模式,然后用 存档(注意,是冒号命令),这
时还不会离开vi,要离开可按 :q,也可以合起来用 q,代表保存后离开。

6.2.1 光标的移动
注意:本节所述都是在命令模式下的操作。

6.2.1.1 基本的光标移动
左 h Backspace 或 左方向键
下 j Enter 或 + 或 下方向键
上 k - 或上方向键
右 l Space 或 右方向键
向下翻页 Ctrl+f PageDown
向上翻页 Crtl+b PageUp
6.2.1.2 复杂光标移动
0 移至行首,或是
~ 移至第一个非空白字符
$ 移至行尾,或
G 移至文件尾(最后一行的第一个非空白字符处)
gg 移至文件首(第一行第一个非空白字符处)
w 移至下一个字首
W 同上,但会忽略一些标点符号
e 移至前一个字字尾
E 同上,但会忽略一些标点符号
b 移至前一个字字首
B 同上,但会忽略一些标点符号
H 移至屏幕顶部第一个非空白字符
M 移至屏幕中间第一个非空白字符
L 移至屏幕底第一个非空白字符
n| 移至第 n 个字符处
:n 或 n G 移至第 n 行行首,注:n表示具体数字,如1,2,3……
) 移至下一个句首
( 移至上一个句首
} 移至下一个段落首
{ 移至上一个段落首

6.2.2 基本编辑指令

6.2.2.1 进入插入模式指令
i 在光标所在字符前开始输入文字(insert)
a 在光标所在字符后开始输入文字(append)
o 在光标所在行下开一新行来输入文字(open)
I 在行首开始输入文字
A 在行尾开始输入文字
O 在光标所在行上开一新行来输入文字
J 将下一行整行连接到本行(joint)

6.2.2.2 删除指令
x 删除光标所在处的字符。也可用 键。
X 删除光标所在位置前的字符。
dd 删除一整行。
dw 删除一个字(delete word)。
dG 删至文件尾。
D 删至行尾,或d$(含光标所在处字符)。

6.2.2.3 取代及还原
r 取代光标所在处的字符。
R 取代字符直至按 < Esc > 为止。
cc 取代整行内容。或大写 S 亦可。
cw 替换一个英文字。
~ 光标所在处之大小写转换。
C 取代至行尾,即光标所在处以后的字都会被替换。或 c$。
c0 取代至行首,或 c~。
u 撤销前面的操作,即 undo,撤销的次数是没有限制的。
U 在光标没离开本行之前,回复所有编辑动作。

6.2.2.4 复制
Yy 复制光标所在行整行。或一个大写Y。
2yy 或 y2y 复制两行。
y~ 复制至行首,或 y0 ,不含光标所在处字符。
y$ 复制至行尾。含光标所在处字符。
Yw 复制一个字。
Yg 复制至文件尾。
y1G 复制至文件首。

6.2.2.5 查找与替换
查找
/ 在命令模式的情形下,按 / 会在左下角出现一个 / ,键入要查找的字串,按回车开始查找。
? 和 / 相同,只是 / 是向前(下)找,? 则是向后(上)找。
n 继续查找。
N 继续寻找(反向)。
* 寻找光标所在处的字(要完全符合)。
# 同上,但 * 是向前(下)找,# 则是向后(上)找。
g* 同 *,但部分符合即可。
g# 同 #,但部分符合即可。
替换
:[range]s/pattern/string/[c,e,g,i]
用 string 替代 pattern。Range 指的是范围,1,7指从第一行至第七行,1,$ 指从第一行至最后一行,也就是整篇文章,也可以 % 代表;c 每次替换前会询问;e 不显示error;g不询问,整行替换;
i不分大小写。

6.2.3 离开
:q 如文件有修改而没保存,会警告,且无法离开。
:q! 放弃所有修改,强迫离开。
q 保存文件后离开,即使文件没有修改也会再保存一次。
:x 保存文件后离开,但如果文件没有修改,则不会做保存的动作。
:ZZ 和 :x 完全一样。
另存,不加文件名就是写入原文件。
文章评论

共有 5 条评论

  1. csbinghu 于 2007-05-18 21:07:03发表:

    :ha3nd

  2. 爱上企鹅的狐狸 于 2005-10-21 14:54:25发表:

    问一下 粘贴 是不是 pp 或者p 啊

  3. 爱上企鹅的狐狸 于 2005-10-21 14:46:46发表:

    正是我需要的 谢谢

  4. chentong 于 2005-05-27 01:05:39发表:

  5. yangzi 于 2005-05-10 09:41:04发表:

    多谢非你不要版主。