ITPub博客

首页 > 应用开发 > IT综合 > Vi使用方法简介

Vi使用方法简介

原创 IT综合 作者:fsz521job 时间:2005-12-08 11:30:23 0 删除 编辑
Vi使用方法简介[@more@]nbsp;档案编辑器Vi使用方法简介BR>
vi 是visual edit 的缩写。
指令模式:
游标的移动、视窗的移动、删除/复制及修改指令介绍(delete change、 yank)、删除与复制(delete、replace)、搬移与复制(delete/put、yank/put)、指令重复、取消前一动作(undo)、字串搜寻、资料的连接与分行、环境的设定、ex指令
其他方面:
中文编辑、恢复编辑时被中断的档案、编辑多个档案
vi 进入:
vi filename
vi 离开:
q! 离开vi,并放弃刚在缓冲区内编辑的内容。
Wq/zz /x 将缓冲区内的资料写入磁盘中,并离开vi
w 将缓冲区内的资料写入磁盘中,但并不离开vi
q 离开vi ,若档案被修改过,则会被要求确认是否放弃修改的内容。
Vi 的操作模式
Vi 提供两种操作模式:输入模式(insert mode)和指令模式(command mode)。当使用者进入vi后,既处于指令模式下,此刻键入任何字元皆被视为指令。
输入模式:a(append) 游标之后加入资料。
A 该行之末加入资料
i (insert) 游标之前加入资料
I 该行之首加入资料
o (open) 新增一行与该行之下供输入资料
O 新增一行与该行之上供输入资料
指令模式:h 向左移一个字元
1 向右移一个字元
j 向上移一个字元
k 向下移一个字元
0 移至该行之首
M 移至视窗的中间那列
L 移至视窗的最后一列
G 移至该档案的最后一列
nG 移至该档案的第n列
n+ 移至游标所在位置之后的第n列
n- 移至游标所在位置之前的第n列
显示该行之行号、档案名称、档案中最末之行号、游标所在行号占
总行号之百分比
视窗移动:
视窗往下卷一页
视窗往上卷一页
视窗往下卷半页
视窗往上卷半页
视窗往下卷一行
视窗往上卷一行
删除、复制及修改指令介绍:
d(delete)、c(change)和y(yank)这一类的指令在vi 中的指令格式为:
operation+scope=command
(运算子)(范围)
运算子:
d 删除指令。删除资料,但会将删除资料复制到记忆体缓冲区。
y 将资料(字组、行列、句子或段落)复制到缓冲区。
p 放置(put)指令,与d和y配合使用。可将最后delete或yank的资料放置于
游标所在位置之行列下。
c 修改(change)指令,类似delete于insert的组合。删除一个字组、句子等
资料,并插入新键入的资料。
范围:
e 由游标所在位置至该字串的最后一个字元。
w 由游标所在位置之下一个字串的第一个字元。
b 由游标所在位置之前一个字串的第一个字元。
$ 由游标所在位置至该行的最后一个字元。
0 由游标所在位置该行的第一个字元。
) 由游标所在位置至下一个句子的第一个字元。
( 由游标所在位置至该句子的第一个字元。
{ 由游标所在位置至该段落的最后一个字元。
} 由游标所在位置至该段落的第一个字元。
整行动作:
dd 删除整行。
D 以行为单位,删除游标后所有字元。
cc 修改整行的内容。
yy yank整行,使游标所在该行复制到记忆体缓冲区。
删除与修改:
x 删除游标所在该字元。
X 删除游标所在之前一字元。
dd 删除游标所在该行。
r 用接于此指令之后的字元取代(replace)游标所在字元。
R 进入取代状态,直到《ESC》为止
s 删除游标所在字元,并进入取代模式直到《ESC》
S 删除游标所在之该行资料,并进入输入模式直到《ESC》
搬移与复制:yank和delete可将指定的资料复制到记忆体缓冲区,而藉有put指令可将缓冲区内的资料复制到荧幕上
例如:搬移一行 :在该行执行dd
游标移至目的地
执行p
复制一行 :在该行执行yy
游标移至目的地
执行p
指令重复:在指令模式中,可在指令前加入一数字n,则此指令动作会重复执行n次。
例如: 删除10行 :10dd
复制10行 :10yy
取消前一动作(undo):即复原执行上一指令前的结果。
u 恢复最后一个指令之前的结果。
U 恢复游标该行之所有改变。
搜寻:在vi中可搜寻某一字串,使游标移至该处。
/字串 往游标之后寻找该字串。
?字串 往游标之前寻找该字串。
n 往下继续寻找下一个相同的字串。
N 往上继续寻找下一个相同的字串。
资料的连接:
J 句子的连接。将游标所在之下一行连接至游标该行的后面。
若某行资料太长亦可将其分成两行,只要将游标移至分开点,进入输入模式(可利用a、i等指令)在按《ENTER》即可

vi模式:
命令模式
输入模式
Esc,从输入模式,切换到命令模式

##################################################

I(nsert) 输入; 在本行开头输入
A(ppend) 输入; 在本行结尾输入

i(nster) 输入; 在光标左方输入
a(ppend) 输入; 在光标右方输入

O 输入; 输入一行,在本行上方输入
o 输入; 输入一行,在本行下方输入

####################################################
C(hange) 修改; 修改到本行的末尾
c(hange) 修改; 与其它键组合使用,如:如:h,j,k,l; b,e,w; H,M,L; 0,$; G,{,},[[,]]
cc 修改; 修改一行或多行ncc; n=1,2,3...

R(eplace) 代替; 代替多个字符
r(eplace) 代替; 代替单个字符

S(ubstitute)代替; 代替一行或多行nS; n=1,2,3...
s(ubstitute)代替; 代替一个字符或多个字符ns; n=1,2,3...

#####################################################

Y(ank) 复制; 复制一行或多行nY; n=1,2,3...
y(ank) 复制; 与其它键组合使用,如:如:h,j,k,l; b,e,w; H,M,L; 0,$; G,{,},[[,]]
yy 复制; 复制一行或多行ny; n=1,2,3...

P(aste) 粘贴; 粘贴词到光标左方,或粘贴行到本行上方
p(aste) 粘贴; 粘贴词到光标右方,或粘贴行到本行下方
:co 粘贴; 粘贴一行或多行, "[开始行号,[结束行号]] co 目的行号"

#####################################################

X 删除; 向左删除一个字符或多个字符nX; n=1,2,3...
x 删除; 向右删除一个字符或多个字符nx; n=1,2,3...

D(elete) 删除; 删除到行尾
d(elete) 删除; 与其它键组合使用,如:h,j,k,l; b,e,w; H,M,L; 0,$; G,{,},[[,]]
dd 删除; 删除一行或多行ndd; n=1,2,3...

######################################################
dw,p 移动; 移动一个词或多个词ndw,p; n=1,2,3...
dd,p 移动; 移动一行或多行ndd,p; n=1,2,3...
:m(ove) 移动; 移动一行或多行, "[开始行号,[结束行号]] m 目的行号"; 0表示文件开头

U(ndo) 撤消; 撤消本行上次操作
u(ndo) 撤消; 撤消上次操作

######################################################
:? 查找; 向上查找
:/ 查找; 向下查找
:N(ext) 查找; 配合?,向上查找上一个
:n(ext) 查找; 配合/,向下查找下一个

:g 替换; " [开始行号,[结束行号]] g /string1/s//string2 /gc ",把string1替换为sting2
g,表示global,全部替换; c表示confirm,确认替换

J(oin) 合并; 合并下一行或多行nJ; n=1,2,3...
#######################################################
h 左移; 左移一个字符或多个字符nh; n=1,2,3...
j 下移; 下移一个字符或多个字符nj; n=1,2,3...
k 上移; 上移一个字符或多个字符nk; n=1,2,3...
l 右移; 右移一个字符或多个字符nl; n=1,2,3...

0 左移; 左移到本行的开头
$ 右移; 右移到本行的末尾

B(ack) 左移; 左移一个词或多个词nB; n=1,2,3...标点符号不算一个词
b(ack) 左移; 左移一个词或多个词nb; n=1,2,3...标点符号也算一个词

W(ord) 右移; 右移到一个词或多个词nW; n=1,2,3...的开头,标点符号不算一个词
w(ord) 右移; 右移到一个词或多个词nw; n=1,2,3...的开头,标点符号也算一个词
E(nd) 右移; 右移到一个词或多个词nE; n=1,2,3...的结尾,标点符号不算一个词
e(nd) 右移; 右移到一个词或多个词ne; n=1,2,3...的结尾,标点符号也算一个词

##################################################

H(ead) 移动到屏幕开始
M(iddle) 移动到屏幕中间
L(ow) 移动到屏幕最后

( 移动到句子开头
) 移动到句子结尾
{ 移动到段落开头
} 移动到段落结尾
[[ 移动到文件开头
]] 移动到文件结尾
G 移动到文件结尾,或移动到第n行nG; n=1,2,3...

Ctrl+B(ack) 上翻一页
Ctrl+F(orward) 下翻一页
Ctrl+U(p) 上翻半页
Ctrl+D(own) 下翻半页
z,enter 下翻到本行或下翻多行nz,enter; n=1,2,3...

##################################################
:args ???显示编辑名单中的各个文件名

:rew????读入编辑名单中的第一个文件
:e#???? 读入编辑名单内的上一个文件
:n?????读入编辑名单中的下一个文件

:e File 编辑另一个文件
:e! File 编辑另一个文件,原文件不保存

:w File 保存为另一个文件
:r File 读入一个文件到本行

:!command 执行shell命令
:sh 进入shell,Ctrl+D退回vi
#################################################
:w(rite) 保存
:w!(rite) 强行保存,文件如果只读,强行保存

:q(uit) 退出
:q!(uit) 强行退出,不保存修改

:x(exit) 保存退出
:x!(exit) 强行退出,文件如果只读,强行保存退出

#################################################
:set num 显示行号
:set nonum 取消行号

:f 显示文件行数
Ctrl+G 显示文件行数

Ctrl+L 刷新屏幕显示

:ab 变量替换; ab string strings; 输入的 string 自动替换成 strings

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/300209/viewspace-811417/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    81
  • 访问量
    561337