Chinaunix

标题: vi常用命令 [打印本页]

作者: 泡澡的鱼    时间: 2009-03-29 22:35
标题: vi常用命令

                                               
使用vi很久了,回想起当时学习vi时的经历,觉得有必要记录下vi常用命令,希望对大家有用。
当时学习vi,主要是在书上或网上看使用命令,然后实践。很多书上都提到了vi的使用,但写的比较笼统,有些命令没有提到。不常用的命令提到了,常用的命令反而没提到,反而有点了混淆视听。而网上网友们提供的vi命令又太过于细了,不管常用不常用,提出来一堆命令,以至于学习没有重点。
基于此,我觉得有必要记录下vi常用命令,希望对大家有用。
(注:[color="#ff0000"]这里只记录我认为常用的命令)
vi有三种工作模式:指令模式、编辑模式和命令模式。
我们从打开vi说起,这样可以确定下学习环境,也方便学习者实践。
打开vi,当前模式即为指令模式,此时可以按a, i, 或o进入编辑模式,或按:(冒号)进入命令模式;进入编辑模式后,按Esc键则返回指令模式;命令模式只能由指令模式进入,命令模式下执行命令后,便自动返回指令模式。
[color="#ff0000"]1、指令模式:此时是不可编辑的,即此时只有按指令键,vi才有反应,否则,vi是不会我反应的。所以此模式下是不能编辑文件的。
[color="#0000ff"]a -- (指输入a,下同)进入编辑模式,在光标当前位置的后面进行输入 (注:中间的"--"是分隔栏,不是命令的一部分,下同)
[color="#0000ff"]i -- 进入编辑模式,在光标当前位置的前面进行输入
[color="#0000ff"]o -- (小写字母o)进入编辑模式,在光标当前行下面新插入一行,并将光标定位到新行的最前面
[color="#0000ff"]0 -- (数字0)仍然是指令模式,定位光标到当前行的最前面
[color="#0000ff"]$ -- (shift+4)仍然是指令模式,定位光标到当前行的最后面
[color="#0000ff"]j -- 仍然是指令模式,光标向下移动
[color="#0000ff"]k[color="#0000ff"] -- 仍然是指令模式,光标向上移动
[color="#0000ff"]h[color="#0000ff"] -- 仍然是指令模式,光标向左移动
[color="#0000ff"]l[color="#0000ff"] -- 仍然是指令模式,光标向右移动
[color="#0000ff"]G[color="#0000ff"] -- 仍然是指令模式,光标移动到文件的最后一行
[color="#0000ff"]nG[color="#0000ff"] -- (n是行数)仍然是指令模式,光标移动到文件的第n行
[color="#0000ff"]%[color="#0000ff"] -- 仍然是指令模式,如果光标当前位置的字符为大中小括号的一部分,则会自动定位到括号的另一部分,此命令用于代码的定位比较容易
[color="#0000ff"]x[color="#0000ff"] -- 仍然是指令模式,将光标当前位置的字符删除
[color="#0000ff"]ndd[color="#0000ff"] -- (n为行数)仍然是指令模式,将从光标当前行开始向后计算共n行,一起cut(剪切)。若n为1,则可不需输入,只需dd即可。
[color="#0000ff"]nyy[color="#0000ff"] -- (n为行数)仍然是指令模式,将从光标当前行开始向后计算共n行,一起copy(复制)。若n为1,则可不需输入,只需yy即可。
[color="#0000ff"]p[color="#0000ff"] -- 仍然是指令模式,粘贴内容到光标所在行的下面
[color="#ff0000"]2、编辑模式:
[color="#0000ff"]即为输入模式,就和运行windows平台的记事本一样。键入什么,则输入什么。
[color="#ff0000"]3、命令模式:
[color="#0000ff"]在指令模式,键入:(冒号)则进入命令模式,光标也会自动定位到vi程序的最下面一行,然后在:(冒号)后面相关命令,然后"回车"即可。命令执行后,会自动返回指令模式。
[color="#0000ff"]:x -- 保存并退出
[color="#0000ff"]:wq -- 同上
[color="#0000ff"]:q! -- 不保存,然后退出
[color="#0000ff"]:n -- (n为行数)光标跳转到第n行
[color="#0000ff"]:1,$s/aa/bb/g -- 从第1行到文件的最后一行(整个文件),将aa替换为bb,不提示全部替换
[color="#0000ff"]:1,$s/aa/bb/g -- 同上,只是每发现一个aa,则会提示是否替换
[color="#0000ff"]:set nu -- 设置显示行号
[color="#0000ff"]:set nonu -- 设置不显示行号
[color="#0000ff"]:set ts=n -- (n为数字)设置Table显示为n个字符的宽度,只是显示,而不是替换
[color="#0000ff"]/xxx --(xxx为查找的内容)向下查找(不需要冒号)
[color="#0000ff"]?xxx --(xxx为查找的内容)向上查找[color="#0000ff"](不需要冒号)
[color="#0000ff"]# --(shift+3)[color="#0000ff"]向上查找光标当前所在位置的单词(不需要冒号)
[color="#0000ff"]' --(引号键)在当前行和上一次查找结果前切换,可多次使用(不需要冒号)
[color="#0000ff"]
               
               
               
               
               
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/90322/showart_1883953.html
作者: dingonet    时间: 2009-04-03 09:05
好,正需要这样的文章啊。楼主太好了。很适合从Win平台转移过来的人。
作者: jhjx704    时间: 2009-04-09 14:52
很好啊。呵呵
作者: afeng666    时间: 2009-04-29 20:10
如何做批量替换???
作者: udbird    时间: 2009-06-07 23:34
找本<学习vi第六版>
你会发现更多的好东西呢




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2