Linux vi的一些操作笔记

来源:互联网 发布:amd vmware mac os 编辑:程序博客网 时间:2024/05/08 17:26

Linux vi的一些操作笔记

2006-10-31 15:28:50|  分类:技术研究 |  标签:网络  |字号 订阅

它和WINDOWS下的编辑器是不一样的,基本上所有的操作都不需要先选择,再操作。

 

vi(Visual)是以视觉为导向的全屏幕编辑器、共分为三种方式(mode):

 

command方式 任何输入都会作为编辑命令,而不会出现在屏幕上,若输入错误则有"岬"的声音;任何输入都引起立即反映 。
insert方式 任何输入的数据都置于编辑寄存器。在command方式下输入(I,a,A等),可进入insert方式,insert方式下按ESC,可跳回command方式。
escape方式 以":"或者"/"为前导的指令,出现在屏幕的最下一行,任何输入都被当成特别指令。

 

vi filename 进入vi并读入指定名称的文件(新、旧文件均可)。
vi +n filename 进入vi并且由文件的第几行开始。
vi +filename 进入vi并且由文件的最后一行开始。
vi + /word filename 进入vi并且由文件的word这个字开始。
vi filename(s) 进入vi并且将各指定文件列入名单内,第一个文件先读入。
vedit 进入vi并且在输入方式时会在状态行显示"INSERT MODE"。

编辑数个文件(利用vi filename(s))进入vi后)
:args 显示编辑名单中的各个文件名。
:e# 读入编辑名单内的前一个文件。
:n 读入编辑名单中的下一个文件。
:rew 读入编辑名单中的第一个文件。
:e file 读入另一个文件进vi(此文件可不在编辑名单内),若原文件经修改还没有存档,则应先以: w 存档。
:e! File 强迫读入另一个文件进入vi,原文件不作存档动作。
存储及退出vi
:wq 把编辑内容存入文件,并退出vi。
:x 把编辑内容存入文件,并退出vi。
ZZ 把编辑内容存入文件,并退出vi。
:w filename 把编辑内容存入名为filename的新文件,但不退出vi。
:q 若文件未修改,可退出vi;文件若经修改而又未保存,这样就无法退出vi,用户必须先以:w来保存编辑内容再以:q退出vi,或是以:q!来放弃编辑内容。
:q! 放弃编辑内容,使文件保持原样,并退出vi。
:sh 暂时退出vi,这时UNIX建立一个新的shell给你,当你完成需要执行的指令后,可使用[Ctrl]+[D]返回原来编辑的地方。
[Ctrl]+[Z] 暂时退出vi,回到上一层的shell,将当前执行的vi移至后台,当工作完成后,可用指令fg将刚才被搁置的vi从后台重新调回前台。
加数据指令
a 在光标位置的右边插入文字,结束时候按ESC键。
A 在光标所在的那一行的结尾处插入文字。
I 在光标所在的那一行的开头处插入文字。
i 在光标位置处插入文字,结束时候按ESC键。
o 光标位置的下方开启新的一行。
O 光标位置的上方开启新的一行。
删除指令
x 删除光标所在的字符。
#x 删除光标所在处之后(含光标)#个字符,如3x。
X 删除光标所在处之前一个字符。
#X 删除光标所在处之前(含光标)#个字符,如3X。
dw 删除一个单词(Word)。
#dw 删除#个单词(Word)。
D 删除自光标所在处到此行结尾的全部字符,同d$。
dd 删除光标所在的整行。
#dd 删除自光标所在处开始向下#行,如5dd。
dG 由现在光标所在处删除至文件结尾。
:start,endd 删除文件的第start到end行。
光标移动
j 光标下移一个字符。
k 光标上移一个字符。
l 光标右移一个字符。
^或0 将光标移至行首。
$ 将光标移至行尾。
w 将光标往右移动一个字。
b 将光标往左移动一个字。
nh 往左移n位。
nl或者spacebar 往右移n位。
nw 右移n个字组,标点符号属于字组。
nW 右移n个字组,标点符号不属于字组。
nb 左移n个字组,标点符号属于字组。
nB 左移n个字组,标点符号不属于字组。
nk 向上移n行。
n+ 向上移n行,光标在该行的起始。
ni 向下移n行。
n- 向下移n行,光标在该行的起始。
e 将光标移至目前光标所在字的最后一个字符。
H 移到屏幕的左上角。
M 移到屏幕的中间行开头。
L 移到屏幕的最后一行。
:$ 将光标直接移到文件尾。
G 将光标直接移到文件尾。
:# 将光标直接移到第#行。
[ 移到文件开始位置。
] 移到文件结束位置。
#G 将光标直接移到第#行。
[Ctrl]+[d] 光标向下卷动半个屏幕,通常是12行。
[Ctrl]+[u] 光标向上卷动半个屏幕,通常是12行。
[Ctrl]+[f] 光标向上卷动一个屏幕,通常是24行。
[Ctrl]+[b] 光标向下卷动一个屏幕,通常是24行。
查找替换
/test 从光标位置往下找字串。
/^test 查找字符串,且此字符串必须出现在一行的行首。
/test$ 查找字符串,且此字符串必须出现在一行的行尾。
?text 从光标位置往上找字串text。
r 替换一个字符。
cw 替换整个字符串。
cc 替换整行字符串。
s 查找并全部替换。
n 继续找下一个字串(在输入上面的寻找指令之后使用)。
复制与剪切
区块行数 dd 将光标所在位置下的区块剪切,按"p"键粘贴到新位置。
区块行数 yy 将光标所在位置下的区块复制,按"p"键粘贴到新位置。
:r f_name 合并文件名为f_name的文件。
:#r f_name 合并文件名为f_name的文件的第#行以后的内容。
行号
:set nu 加入行号。
:set nonu 关闭行号。
特殊字符
^ 只有当目标字符串出现在行首时才符合查找条件。例如:/^Hudson。
$ 只有当目标字符串出现在行尾时才符合查找条件。例如:/finally\.$,只找出结尾为"finally."的字符串,由于"."有特殊的意义,因此在前面需加上"\"。
. 可以匹配任何的字符,如你要查找ROM或RAM,即可使用/R.M。
[] 中括号表示一个范围,在查找时所有落于此范围内的字符都符合查找条件,例如:/[aA]board会找出aboard或是Aboard。在中括号里出可以用连字号(-)来表示一段区间,如[a-z]是指所有的小写字母。
* *可以匹配在*号前任何数量的字符。
其他命令
. 重复前一指令。
u 取消前一条命令。
U 取消作用于现在这行的一切指令。
Ctrl + l 刷新屏幕显示。
:f 或<Ctrl> + g 告诉用户有关现行编辑文件的数据。

 

[全选并粘帖]

1,$y后,然后p粘贴

不过缓冲区好像有限制,好像是默认30行

 

[全选并删除]

按Esc 然后 dG
注意大小写

光标在任何地方都可以用
:%d

 

[上下查找]

n 是向下查,N 是向上查

 

[删除一行或多行]

要删除一行,光标此行并命令行敲d
要删除多行,比如说光标下面的10行,敲d10d.