vi/vim常用的命令(1)
1. 插入(Insert)命令
vi提供了两个插入命令:i 和 I命令。
(1) i命令
插入文本从光标所在位置前开始,并且插入过程中可以使用退格键删除错误的输入。此时vi处于插入状态,屏幕最下行显示--INSERT-(插入)字样。
例如,有一正在编辑的文件,如下所示:
- Welcome to vi world!Come on!
- ~
- ~
光标位于第一个!上,需在其前面插入:
- This is an example!
使用i命令,并输入相应文本后,屏幕显示如下:
- Welcome to vi world This is an example!!Come on!
- ~
- ~
由此例可以看到,光标本来是在第一个!处,但是由于是从光标所在位置前开始插入,所以这个!就被挤到了新插入的文本之后。
(2) I命令
该命令是将光标移到当前行的行首,然后在其前插入文本。
2. 光标移动操作
全屏幕文本编辑器中,光标的移动操作无疑是最经常使用的操作了。用户只有熟练地使用移动光标的这些命令,才能迅速准确地到达所期望的位置并进行编辑。
vi中的光标移动既可以在命令模式下,也可以在文本输入模式下,但操作的方法不尽相同。
(1) 在文本输入模式下,可直接使用键盘上的4个方向键移动光标。
(2) 在命令模式下,有很多移动光标的方法。不但可以使用4个方向键来移动光标,还可以用h、j、k、l这4个键代替4个方向键来移动光标,这样可以避免由于不同机器上的不同键盘定义所带来的矛盾,而且使用熟练后可以手不离开字母键盘位置就能完成所有操作,从而提高工作效率。
3. 在屏幕上移动
vi提供了3个关于光标在全屏幕上移动并且文件本身不发生滚动的命令,分别是H、M和L命令。
(1) H命令
该命令将光标移至屏幕首行的行首(即左上角),也就是当前屏幕的第一行,而不是整个文件的第一行。利用此命令可以快速将光标移至屏幕顶部。若在H命令之前加上数字n,则将光标移至第n行的行首。值得一提的是,使用命令dH将会删除从光标当前所在行至所显示屏幕首行的全部内容。
(2) M命令
该命令将光标移至屏幕显示文件的中间行的行首。即如果当前屏幕已经充满,则移动到整个屏幕的中间行;如果并未充满,则移动到文本的那些行的中间行。利用此命令可以快速地将光标从屏幕的任意位置移至屏幕显示文件的中间行的行首。例如,不论光标在屏幕的何处,在命令模式下,输入命令M之后,光标都将移到add这一行的字母a上。同样值得一提的是,使用命令dM将会删除从光标当前所在行至屏幕显示文件的中间行的全部内容。
(3) L命令
当文件显示内容超过一屏时,该命令将光标移至屏幕上的最底行的行首;当文件显示内容不足一屏时,该命令将光标移至文件的最后一行的行首。可见,利用此命令可以快速准确地将光标移至屏幕底部或文件的最后一行。若在L命令之前加上数字n,则将光标移至从屏幕底部算起第n行的行首。同样值得一提的是,使用命令dL将会删除从光标当前行至屏幕底行的全部内容。
4. 编辑命令
实际上花在字处理上的大多数时间是修改而不是输入新的东西。因此,知道如何方便地修改就很重要。
(1) x--删除一个字符
删除文字的最简单的方式是用x。这个命令的结果是光标所在处的字符消失,后面的文字左移动。如果你删除的字符是一行最后的一个字符,那么光标将向左移动一个,这样光标就不会停留在不存在的字符的下面了。假如没有任何文字了,喇叭就叫。
(2) d--删除对象
这个命令的右边还要有一定的文字对象。文字对象就是一块文字。其右边接的就是在控制光标移动的那些字符。如w表示向前一个单词,那么dw将删除下一个单词。5w表示前进5个单词,那么d5w将删除它们。
vi/vim常用的命令(2)
(3) dd--删除一行
最常用的d系列命令之一。和前面一样,5dd将删除5行。
(4) D--整个删除
大写形式的D用来删除从光标到行尾。和d$一样效果。
(5) u--恢复
不仅仅撤销删除,还撤销所有的编辑工作。
(6) .--重复
重复编辑工作。
5. 退出vi
当编辑完文件,准备退出vi返回到shell时,可以使用以下几种方法。
(1) 在命令模式中,连按两次大写字母Z,若当前编辑的文件曾被修改过,则vi保存该文件后退出,返回到shell;若当前编辑的文件没被修改过,则vi直接退出, 返回到shell。
(2) 在末行模式下,输入命令 :w vi保存当前编辑文件,但并不退出,而是继续等待用户输入命令。在使用w命令时,可以再给编辑文件起一个新的文件名。
如输入以下命令:
- w newfile
此时vi将把当前文件的内容保存到指定的newfile中,而原有文件保持不变。若newfile是一个已存在的文件,则vi在显示窗口的状态行给出提示信息:
- File exists (use ! to override)
此时,若真的希望用文件的当前内容替换newfile中原有内容,可使用命令:
- :w! newfile
否则可选择另外的文件名来保存当前文件。
(3) 在末行模式下,输入命令:q系统退出vi返回到shell。若在用此命令退出vi时,编辑文件没有被保存,则vi在显示窗口的最末行显示如下信息:
- No write since last change (use ! to overrides)
提示用户该文件被修改后没有保存,然后vi并不退出,继续等待用户命令。若用户就是不想保存被修改后的文件而要强行退出vi时,可使用命令:q! vi放弃所作修改而直接退到shell下。
(4) 在末行模式下,输入命令 :wq Vi将先保存文件,然后退出vi返回到shell。
(5) 在末行模式下,输入命令 :x,该命令的功能与命令模式下的ZZ命令功能相同。