vi命令一览表!
ex, vi, view - text editors
◎SYNOPSIS
vi [-eFGlRrSv] [-c cmd] [-t tag] [-w size] [file ...]
ex [-eFGRrSsv] [-c cmd] [-t tag] [-w size] [file ...]
◎DESCRIPTION
ex和vi是相同程式但不同介面,ex是一行处理的(line-oriented),
vi是以全萤幕为基准的(screen oriented).二者能相互切换.
View相当於vi使用-R(唯读)参数
◎OPTIONS
-e 以ex模式开始编辑,如同用ex编辑一般。
vi -e filename 等同於 ex filename
-F 当第一次编辑时,不要让vi整个档案。
(预设是整个档案,以避免当您在编辑时,他人更改这个档案。)
-R 以唯读模式开启,如同以vipw开启档案,或在命令列中设定readonly参数。
-r 重新取得某个特定档案,若没有指定档案,档案表列会被重新取得。
若没有该指定档案,档案会被视为没有-r参数编辑。
-S 以安全编辑模式启动,不允许所有的外部程式存取。
-s 进入batch模式,只能应用在ex编辑。batch模式在执行ex scripts非常有用。
一些及时资讯及其他使用者导向的讯息被忽略(不显示),
没有开始档案或环境变数被读取。
-w 设定基本的视窗大小,用以定义显示的行数。
-v 以vi模式开始编辑,如同vi 或view命令。
ex/vi从标准输入读取讯息,在vi介面, 若标准输入不是一个终端机,会产生错误。
在ex介面,若标准输入不是终端机,无论如何ex会试着从他读取命令。
然而,此时会以batch模式进行,如同-s参数被指定。
移动命令:
<control+A> 往下移动到这个字下次一出现的地方。
<control+B> 标向上移动一个萤幕。
<control+D> 标往下移动数行(约12行)。
<control+E> 将萤幕往上一行,但标位置不变。
<control+F> 标往下移动一个萤幕。
+ 标往下移动到下一行第一个非空白字元。
<control+U> 标往上移动数行(约12行)。
<control+Y> 将萤幕往上动,但标位置不变.
CTRL+Y 每移动一次 Y就按一次
(当然您的标须位在至少能够向上动的位置)
$ 将标移动到该行尾.
( 标往上移动到上一句子.
) 标往下移动到下一句子.
- 标移动到上一行第一个非空白字元.
0(数字) 移动标到该行的第一个字元(包含空白).
< 移动该行向左移动一个tab键距离,按第二次後开始动作.
> 移动该行向右移动一个tab键距离,按第二次後开始动作.
B 往上移动标到下一个字的开始.
E 标往後移动到下一个字的最後一个字元.
nG 移动到某行,n为行数,若没有指定则为档案的最後一行.
H 移动标到档案第一行行首.
L 将标移动到萤幕的最下一行.
M 将标移动到萤幕的中间行.
W 往下移动标到下一个字的开始.
^ 移到该行第一个非空白字元.
e 移动到该字的最後一字母.
f<字元> 行中向後搜寻该字母并移动标到该位置.
移动到a字母的位置fa
t<字元> 行中向後搜寻该字母并移动标到该字元前一个位置.
{ 往上移动到前一段落.
} 往下移动到後一段落.
档案命令:
<control+G> 显示档案的资讯。
显示出目前档案是否更改,所在行的位置.
file_name: unmodified : line 1 of 380 [0%]
<control+L> 重画萤幕。
<control+R> 重画萤幕。
<control+Z> 暂停编辑 回到shell,可用fg回到编辑画面
<control+^> 切换到最近编辑的档案.
vi file_name file_name2
用此命命可以在两个档案中切换.
ZZ 将文件存档并离开vi
编辑命令:
输入:
I 移动标道行首的第一个字元并开始接受输入.
R 以取代模式进入输入模式.
:
Y 该行到暂存区
删除:
D 从标目前位置道行尾的所有字元删除..
S 将该行清除并进入输入模式.
X 删除标之前的一个字元
取代:
!shell命令 !後接shell comd ,并以shell cmd 执行结果取代标该行.
!panda
用以下讯息取代原有行的内容
bash: panda: command not found
r 按r後接着按某字元,以取代标所在的该字元.
~ 切换标所在字元的大小写
重:
& 在该行重之前的规则表示式.
前提是需要之前有执行过规则表示式.
用panda取代a :s/a/panda/
若之前没有任何表示式 则系统会显示如下讯息
No previous regular expression
. 重上一个更改文件内容的vi命令.
n 搜寻之前所搜寻过的字串
若先执行 /BSD
再执行 n 等同於执行 /BSD
若先前没有搜寻任何东西 会有如下讯息
No previous search pattern.
复原:
U 恢复状态到标起初接触此行的状态
u 复原前一个动作产生的效果(也就是回复)
其他:
: 执行ex 命令
J 将下一行与此行合.
Q 离开vi模式并切换到ex模式.
====================进入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 光标移至第n行首
n+ 光标下移n行
n- 光标上移n行
n$ 光标移至第n行尾
H 光标移至屏幕顶行
M 光标移至屏幕中间行
L 光标移至屏幕最后行
0 (注意是数字零)光标移至当前行首
$ 光标移至当前行尾
t ?????
=================屏幕翻滚类命令================
Ctrl+u 向文件首翻半屏
Ctrl+d 向文件尾翻半屏
Ctrl+f 向文件尾翻一屏
Ctrl+b 向文件首翻一屏
nz 将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。
==================插入文本类命令================
i 在光标前
I 在当前行首
a 光标后
A 在当前行尾
o 在当前行之下新开一行
O 在当前行之上新开一行
r 替换当前字符
R 替换当前字符及其后的字符,直至按ESC键
s 从当前光标位置处开始,以输入的文本替代指定数目的字符
S 删除指定数目的行,并以所输入文本代替之
ncw或nCW修改指定数目的字
nCC 修改指定数目的行
===================删除命令=========================
ndw或ndW 删除光标处开始及其后的n-1个字
d0 删至行首(删除当前光标的前一个字符开始到行首的字符串)
d$ 删至行尾(删除当前光标所在字符到行尾的字符串)
ndd 删除当前行及其后n-1行,并且光标停留在当前行后的第n行的第一个非空字符处
dd 删除当前行
x或X 删除一个字符,x删除光标后的,而X删除光标前的
Ctrl+u 删除输入方式下所输入的文本
===================搜索及替换命令====================
/pattern 从光标开始处向文件尾搜索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均用p2替换
==================选项设置===========================
all 列出所有选项设置情况
term 设置终端类型
ignorance 在搜索中忽略大小写
list 显示制表位(Ctrl+I)和行尾标志($)
number 显示行号
report 显示由面向行的命令修改过的数目
terse 显示简短的警告信息
warn 在转到别的文件时若没保存当前文件则显示NO write信息
nomagic 允许在搜索模式中,使用前面不带“\”的特殊字符
nowrapscan 禁止vi在搜索到达文件两端时,又从另一端开始
mesg 允许vi显示其他用户用write写到自己终端上的信息
=====================最后行方式命令==================
:n1,n2 co n3 将n1行到n2行之间的内容拷贝到第n3行下
:n1,n2 m n3 将n1行到n2行之间的内容移至到第n3行下
:n1,n2 d 将n1行到n2行之间的内容删除
:w 保存当前文件
:e filename 打开文件filename进行编辑
:x 保存当前文件并退出
:q 退出vi
:q! 不保存文件并退出vi
:!command 执行shell命令command
:n1,n2 w!command 将文件中n1行至n2行的内容作为command的输入并执行之,若不指定 n1,n2,则表示将整个文件内容作为command的输入
:r!command 将命令command的输出结果放到当前行
==================寄存器操作=================================
"?nyy 将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字
"?nyw 将当前行及其下n个字保存到寄存器?中,其中?为一个字母,n为一个数字
"?nyl 将当前行及其下n个字符保存到寄存器?中,其中?为一个字母,n为一个数字
"?p 取出寄存器?中的内容并将其放到光标位置处。这里?可以是一个字母,也可以是一 个数字
ndd 将当前行及其下共n行文本删除,并将所删内容放到1号删除寄存器中。
=======================多行注释====================================
如果要给多行程序作注释,一个笨办法就是 插入 # ,然后用 j 跳到下一行用 . 命令,
重复上个命令。如果要注释几百行,这样的方法恐怕太愚蠢了。一个聪明的办法是:
:.,+499 s/^/#/g
=======================加密文件================================
:X 在提示下就可以输入密码了。
========================在 VIM 下使用滚轮鼠标 =====================
本文出自:http://www.freelamp.com 作者: 徐永久 (2002-03-01 08:02:00)
滚轮鼠标很棒吧?我们要在 Vi 程序下也要让他滚动。
不必去按 Ctrl-F/Ctrl-B 了!
如果你像我那样喜欢在 xterm 下使用 Vim 来编辑文件,那么对于在Vim 下能使用滚
轮鼠标一定非常神往。本文的这个小技巧便能帮助你实现这个梦想。
你需要把下面的代码放入~/.Xdefaults 文件:
XTerm*VT100.Translations: #override \n\
: string("0x9b") string("[64~") \n\
: string("0x9b") string("[65~") \n\
: string("0x9b") string("[62~") \n\
: string("0x9b") string("[63~") \n\
: \n\
:
然后,修改 vimrc 文件,为以上的绑定建立映射:
map [62~
map! [62~
map [63~
map! [63~
map [64~
map! [64~
map [65~
map! [65~
好了,现在就可以利用滚轮来翻滚vim 屏幕了。
忘掉 Ctrl-F 和 Ctrl-B 吧。
本文地址:http://com.8s8s.com/it/it36188.htm