分类:
2009-08-26 11:06:25
vi是一种全屏幕编辑器,可以在整个屏幕范围内编辑文本所做的编辑直接反映到屏幕上。vi使用编辑缓冲区,即首先将文件读入缓冲区中,对该文件的修改作用于缓冲区中的副本,直到用户显式执行保存命令。
vi分为三种模式:命令模式、文本输入模式、ex转义命令模式(末尾行模式)。在shell中执行vi命令,vi自动进入命令模式。在任何一种模式下按下ESC键均返回到命令模式。文本输入
vi [ -option ... ] [ command ... ] [ filename ... ]
☆ w:保存文件
☆ wq:保存文件并退出vi。
☆ x:如果编辑缓冲区被改变则保存后退出,否则直接退出vi。
☆ q:退出vi。若编辑缓冲区被改变,则vi给出警告信息,并且不退出。
☆ q!:放弃自上次保存以来所作的修改(如果有),并退出vi。
☆ e!:放弃自上次保存以来所作的修改(如果有),并重新打开文件。
☆ e:编辑另一个文件。
☆ a:在当前字符后面添加文本。
☆ A:在行尾添加文本。
☆ i:在当前字符前添加文本。
☆ I:在行首添加文本。
☆ s:将当前字符替换成指定文本。
☆ S:将当前行替换成指定文本。
☆ r:将当前字符替换成指定字符。
☆ R:从当前字符处开始替换字符。
o:在当前行之下添加文本。
☆ O:在当前行之上添加文本。
☆ h:向在移动光标。
☆ j:向下移动光标。
☆ k:向上移动光标。
☆ l:向上移动光标。
☆ w:移动到下一个单词头。
☆ e:移动到单词尾。
☆ b:移动到上一个单词头。
☆ g:移动到指定行的第一个非空格字符处。
☆ 0:移动到行首。
☆ $:移动到行尾。
☆ %:移动到与当前括号匹配的括号处。
☆ x:删除当前字符并放入无名缓冲区中。
☆ X:删除光标前一字符并放入无名缓冲区中。
☆ dd:删除当前行并放入无名缓冲区中。
☆ yy:将当前行放入无名缓冲区中(不删除)。
☆ d:删除指定对象,并放入无名缓冲区中。对象是指由光标移动命令确定的文本块。
☆ y:将指定对象放入无名缓冲区中(不删除)。
☆ “:指定缓冲区名称。小写字母表示刷新指定缓冲区,大写字母表示向该缓冲区添加。
☆ p:从指定缓冲区(或者无名缓冲区)中取出文本,并添加到光标之后。
☆ P:从指定缓冲区(或者无名缓冲区)中取出文本,并添加到光标之前。
正则表达式是普通字符和特殊字符(元字符)序列。正则表达式是功能更加强大的类似于文件通配符(*)的表达式。正则表达式通常用于查找字符串,在vi和命令行中大量使用。
正则表达式元字符有\、.、*、^、$、[和]。\表示将其后的元字符转义成普通字符。.(英文句号)表示任意一个字符。*表示任意字符串。表示^表示行首,在中括号里表示取非。$表示行尾。[和]表示匹配区间。举例如下:
^abc:行首三个字符为“abc”。
abc$:行尾三个字符为“abc”。
^$:空行。
ab[ab]c:字符串“abac”、“abbc”中的一个。
ab[a-z]c:前两个字符为“ab”,最后一个字符是“c”,中间有一个小写字母的字符串。
ab[^a-d]c:前两个字符为“ab”,最后一个字符是“c”,中间有一个不为a、b、c或者d的字符的字符串。
在vi编辑器中的查找命令的用法为:
/Pattern 或者 ?Pattern
其中:Pattern指定查找模式(正则表达式)。
第一个命令向下查找,第二个命令向上查找。下面两个命令继续最后一次查找。
n 或者 N
第一个命令在相同方向上查找,第二个命令在相反方向上查找。
例如,要查找字符串“Your Name”或者“Your name”,则输入命令:
/Your [Nn]ame
可以在末尾行模式下的查找命令后执行其他的子命令,例如下面这个命令将文件中所有的字符串“Your Name”替换成“My Name”:
:/Your Name/s//My Name/g
再如,下面这个命令将所有包含字符串“Your Name”的行打印在屏幕上:
:/Your Name/p