2010年(122)
分类:
2010-08-30 21:08:57
认识vi
vi是visual interface的简称。是Linux系统的第一个全屏交互式编辑器。可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制。
Vi相当简洁,没有菜单,只有命令且相当丰富。Vi的三种基本工作模式是:命令行模式、文本输入模式和末行模式。
命令行模式
按Esc进入该模式。在该模式下,用户可以输入各种合法的vi命令,用于管理自己的文档。此时从键盘上输入的任何字符都被当做编辑命令来解释。
文本输入模式
在该模式下,用户输入的任何字符都被vi当做文件内容保存起来,并将其显示在屏幕上。
末行模式
在命令模式下,用户按“:”键即可进入末行模式。多数文件管理命令都是在此模式下执行的。
光标移动
常用到的一些命令(motion)
h、j、k、l这四个键代替四个方向键来移动光标的方法。也可以用“+”和“-”向上或向下移动。这几个命令前面都可以加上数字n表示移动的幅度。
H:移动到屏幕第一行。
M:移动到屏幕中间一行。
L:移动到屏幕最后一行。
fx:移动光标到当前行的下一个 x 处。很明显,x 可以是任意一个字母,而且你可以使用 ; 来重复你的上一个 f 命令。
tx:和上面的命令类似,但是是移动到 x 的左边一个位置。(这真的很有用)
Fx:和 fx 类似,不过是往回找。类似的还有Tx。
w/W:光标往前移动一个词。
b/B:光标往后移动一个词。
e/E:到单词尾部。
0:移动光标到当前行首。
^:移动光标到当前行的第一个字母位置。
$:移动光标到行尾。
):移动光标到下一个句子。
(:移动光标到上一个句子。
{:移动到当前段落的开头。
}:移动到下一段落的开头。
屏幕移动
^表示Ctrl
^F:向前滚动一屏。
^B:向后滚动一屏。
^D:向前滚动半屏。
^U:向后滚动半屏。
^E:向前滚动一行。
^Y:向后滚动一行。
H:移动到屏幕第一行。
M:移动到屏幕中间一行。
L:移动到屏幕最后一行。
z回车:把当前行移动到屏幕顶部并滚动。
z.:把当前行移动到屏幕中央并滚动。
z-:把当前行移动到屏幕底部并滚动。
回车:移动到下一行的首字符。
+:移动到下一行的首字符。
-:移动到上一行的首字符。
E:移动到词尾。
e:移动到词尾(忽略标点)。
/pattern:向前搜索模式。
?pattern:向后搜索模式。
n:重复上次搜索。
N:反方向重复上次搜索。
/:向前重复上次搜索。
?:向前重复上次搜索。
;:同方向重复前面的搜索命令。
,:反方向重复前面的搜索命令。
nG:移动到第n行。
G:移动到文件的尾部。
``:返回到以前的标记或上下文。
‘’:单引号,返回到包含以前标记的行的开始。
缓冲区或标记命令
‘’b:对缓冲区b执行命令。
mx:用x标记当前位置。
‘x:移动光标到x所记的行的首字符。
`x:移动光标到x所标记的字符。
``:返回到上一标记或上下文的确切位置。
‘’:返回到上一标记或上下文所在行的位置。
复制粘贴
在可视选择模式下剪切和拷贝
一旦你高亮了选区,你或许想进行一些操作:
d:剪贴选择的内容到剪贴板。
y:拷贝选择的内容到剪贴板。
c:剪贴选择的内容到剪贴板并且进入插入模式。
在非可视选择模式下剪切和拷贝
如果你很清楚的知道你想拷贝或者剪切什么,那你根本就不需要进入可视选择模式。这样也会节省时间:
d{motion}:剪切 motion 命令跨过的字符到剪贴板。比如,dw 会剪切一个词而 dfS 会将从当前光标到下一个 S 之间的字符剪切
至剪贴板。
y{motion}:和上面类似,不过是拷贝。
c{motion}:和 d{motion} 类似,不过最后进入插入模式。
dd:剪切当前行。
yy:拷贝当前行。
cc:剪切当前行并且进入插入模式。
D:剪切从光标位置到行尾到剪贴板。
Y:拷贝当前行。
C:和 D 类似,最后进入插入模式。
x:剪切当前字符到剪贴板。
s:和x类似,不过最后进入插入模式。
插入命令
i命令:插入文本从光标所在位置前开始,并且插入过程中可以使用键删除错误的输入。
I命令:该命令是将光标移到当前行的行首,然后在其前插入文本。
附加命令
a命令:在光标所在位置之后追加新文本
A命令:将光标挪到所在行的行尾,从那里开始插入新文本。
A和a是把文本插入到行尾的唯一方法。
删除
删除单个字符
x:删除光标处的字符。若在x之前加上一个数字n,则删除从光标所在位置开始向右的n个字符。
X:删除光标前面的那个字符。若在X之前加上一个数字n,则删除从光标前面那个字符向左的n个字符。
删除多个字符
dd:删除光标所在的整行。在dd前可加上一个数字n,表示删除当前行及其后n-1行的内容。
D或d$:两命令功能一样,都是删除从光标所在处开始到行尾的内容。
d0:删除从光标前一个字符开始到行首的内容。
dw:删除一个单词。若光标处在某个词的中间,则从光标所在位置开始删至词尾。同dd命令一样,可在dw之前加一个数字n,表示删除n个指定的单词。
替换命令及其他操作
R:使用新文本替换现在文本。
S:删除行并替换文本。
J:合并当前行和下一行。
~:大小写转换。
打开命令
o命令:该命令将在光标所在行的下面一新开一行,并将光标置于该行的行首,等待输入文本。
O命令:是在光标所在行的上面插入一行,并将光标置于该行的行首,等待输入文本。
取消命令
在命令模式下输入字符u和U。它们的功能都是取消刚才输入的命令,恢复到原来的情况。小写u和大写U在具体细节上有所不同,二者的区别在于:大写U命令的功能是恢复到误操作命令前的情况。U命令只能取消前一步操作,如果用U命令撤销了前一步操作,当再按U键时,并不是取消再前一步的操作,而是取消了刚才U命令执行的操作。而小写u命令的功能是把当前恢复成被编辑前的状态,而不管此行被编辑了多少次。
重复(Redo)
在命令模式下按“.”键即可。
退出vi
ZZ:若当前编辑的文件曾被修改过,则vi保存该文件后退出,返回Shell。
在末行模式下,输入命令:w。vi保存当前编辑文件,但并不退出,而是继续等待用户输入命令。
:q!放弃所作修改而直接退到Shell。
:wq先保存文件,然后退出vi。
:x同ZZ