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 吧。

|