vi常用命令(转)

上一篇 / 下一篇  2009-05-23 16:49:16

使用vi很久了,回想起当时学习vi时的经历,觉得有必要记录下vi常用命令,希望对大家有用。

当时学习vi,主要是在书上或网上看使用命令,然后实践。很多书上都提到了vi的使用,但写的比较笼统,有些命令没有提到。不常用的命令提到了,常用的命令反而没提到,反而有点了混淆视听。而网上网友们提供的vi命令又太过于细了,不管常用不常用,提出来一堆命令,以至于学习没有重点。

基于此,我觉得有必要记录下vi常用命令,希望对大家有用。

(注:这里只记录我认为常用的命令)

vi有三种工作模式:指令模式、编辑模式和命令模式。

我们从打开vi说起,这样可以确定下学习环境,也方便学习者实践。

打开vi,当前模式即为指令模式,此时可以按a, i, 或o进入编辑模式,或按:(冒号)进入命令模式;进入编辑模式后,按Esc键则返回指令模式;命令模式只能由指令模式进入,命令模式下执行命令后,便自动返回指令模式。

1、指令模式:此时是不可编辑的,即此时只有按指令键,vi才有反应,否则,vi是不会有反应的。所以此模式下是不能编辑文件的。

a -- (指输入a,下同)进入编辑模式,在光标当前位置的后面进行输入 (注:中间的"--"是分隔栏,不是命令的一部分,下同)

i -- 进入编辑模式,在光标当前位置的前面进行输入

o -- (小写字母o)进入编辑模式,在光标当前行下面新插入一行,并将光标定位到新行的最前面

0 -- (数字0)仍然是指令模式,定位光标到当前行的最前面

$ -- (shift+4)仍然是指令模式,定位光标到当前行的最后面

j -- 仍然是指令模式,光标向下移动

k -- 仍然是指令模式,光标向上移动

h -- 仍然是指令模式,光标向左移动

l -- 仍然是指令模式,光标向右移动

G -- 仍然是指令模式,光标移动到文件的最后一行

nG -- (n是行数)仍然是指令模式,光标移动到文件的第n行

% -- 仍然是指令模式,如果光标当前位置的字符为大中小括号的一部分,则会自动定位到括号的另一部分,此命令用于代码的定位比较容易

x -- 仍然是指令模式,将光标当前位置的字符删除

ndd -- (n为行数)仍然是指令模式,将从光标当前行开始向后计算共n行,一起cut(剪切)。若n为1,则可不需输入,只需dd即可。

nyy -- (n为行数)仍然是指令模式,将从光标当前行开始向后计算共n行,一起copy(复制)。若n为1,则可不需输入,只需yy即可。

p -- 仍然是指令模式,粘贴内容到光标所在行的下面

2、编辑模式:

即为输入模式,就和运行windows平台的记事本一样。键入什么,则输入什么。

3、命令模式:

在指令模式,键入:(冒号)则进入命令模式,光标也会自动定位到vi程序的最下面一行,然后在:(冒号)后面相关命令,然后"回车"即可。命令执行后,会自动返回指令模式。

:x -- 保存并退出

:wq -- 同上

:q! -- 不保存,然后退出

:n -- (n为行数)光标跳转到第n行

:1,$s/aa/bb/g -- 从第1行到文件的最后一行(整个文件),将aa替换为bb,不提示且全部替换

:1,$s/aa/bb/gc -- 同上,只是每发现一个aa,则会提示是否替换

:set nu -- 设置显示行号

:set nonu -- 设置不显示行号

:set ts=n -- (n为数字)设置Table显示为n个字符的宽度,只是显示,而不是替换

/xxx --(xxx为查找的内容)向下查找(不需要冒号)

?xxx --(xxx为查找的内容)向上查找(不需要冒号)

# --(shift+3)向上查找光标当前所在位置的单词(不需要冒号)

' --(引号键)在当前行和上一次查找结果前切换,可多次使用(不需要冒号)


TAG:

 

评分:0

我来说两句

Open Toolbar