Unit 9 vim: an advanced text editor
Keyword: vi, vim, function vi是一个强大的文本编辑器。vim是vi的增强版本,但主要功能相同。初次的用户包括我都会用office、记事簿、UltraEdit等其他文本编辑器作比较,很可能完全看不出其优胜之处。但当你运用其进行编辑Linux配置文件,编写程序等做类似操作的时候,其强大的查找、块操作、宏以及无需鼠标配合等优点能够大大加速编辑速度。其实各种文本编辑器各有千秋,最重要是用得顺手,用在合适的地方。尽管在Linux已经有大量的文本编辑器,但vi在UNIX体系已经有悠久的历史,导致我们无法忽略其存在。然而,对于初学者,vi的用户界面与使用方法非常不符合WYSIWYG(所见即所得)的原则,甚至认为它比较混乱,无所适从。事实上,vi编辑器是专门为经验丰富的用户设计的,它的界面和使用方法提供了更快的编辑速度(强调一下是编辑速度,不是输入速度)和更强的功能。对于熟知它的用户,vi的许多特性节省了时间和击键次数,并可以完成一些其他编辑器无法完成的功能。
其实如果真的要完全了解vi的所有功能,大概需要一本挺厚的书才比较全面。你可以想象,几乎所有的按键都是一个以上的功能,而且还有组合键,不同模式的使用,宏等等,没有一两百页是说不清楚的。可RHCE的官方和非官方教材对vi的介绍就仅限于几个常用的命令,我在这儿会稍微多写一些,让大家领略vi的强大。
与其他编辑器最大的不同是vi有三种模式:
- 命令模式(command mode):系统默认就是此模式,主要有一些移动、块操作、查找等命令
- 插入模式(insert mode):输入、编辑字符
- 辅助模式(Ex mode):打开、保存、退出、设定宏等命令
9.1 vi command mode 命令模式
启动vi后立刻会进入默认的命令模式,一般在其他模式下连按Esc两次就一定会退到命令模式下。以下是命令介绍,请注意大小写。
移动命令
- w 光标往后一个单词
- b 光标往前一个单词
- o 光标移到行首,相当于Home
- ^ 光标移到行尾,相当于End
- g 光标移到文章头
- G 光标移到文件尾,另一个用法是{number}G,如“10G”就跳到第10行
- ) 光标移到句首
- ( 光标移到句末
- } 光标移到段首
- { 光标移到段末
- {number}j 如“3j”就向下3行
搜索
- /string 正向搜索,n继续下一个,N上一个
- ?string 反向搜索,n继续下一个,N上一个
书签功能
- 命令(m)可以创建一个书签,如“ma”,会创建一个名字为a的书签
- “`a”就会回到a的位置
- “`.”就会回到最后一次修改的位置
复制粘贴删除
- yy 复制当前行
- dd 删除(其实是剪切)当前行,另一个用法{number}dd,如“10dd”即删除向下10行
- yw 复制当前单词
- dw 删除当前单词,如果光标停在单词的中间,其实只会删除光标到单词末尾的部分
- x 剪切当前单词
- y{motion} 复制光标y移动一次的范围,这个功能相当强大,可以大大加快编辑速度。你现在知道为何要这么多的移动方式啦
- p 在当前光标后粘贴(如果复制的内容是行,就会在下一行粘贴)
- P 在当前光标前粘贴(如果复制的内容是行,就会在上一行粘贴)
剪贴板功能
命令(")可以定义一个剪贴板,但在定义的同时要赋值。如“"k3x”,就是剪切当前3个字符,并赋值给剪切板k;另一个例子,“"myy”,就是复制当前行,并赋值给剪切板m。
undo,vi的undo功能非常强,其在编辑的时候会把编辑的步骤都记录在/tmp,所以只要不保存,所有的步骤都可以undo
- u 撤销最后一次变更,可以撤销直至最原始的记录
- U 撤销本行的所有变更
- Ctrl+r redo
- 如果由于系统崩溃导致死机,可以用vi –r file恢复
窗口命令
- Ctrl+w,s 水平分割为两个窗口
- Ctrl+w,v 垂直分割为两个窗口
- Ctrl+w,w(或者方向键)切换窗口
9.2 vi insert mode 插入模式
在命令模式下按“A,a,I,i,O,o”就会进入插入模式,屏幕右下角显示“ - -INSERT- -”。按Esc退出插入模式,返回命令模式。不解释了,反正我只用a。
9.3 vi Ex mode 辅助模式
在命令模式下按“:”就会进入辅助模式,屏幕右下角显示“:”。按Esc退出辅助模式,返回命令模式。其命令相当多,我不逐一解释了,就选几个常用的说说
- e “:e file”表示打开一个新文件
- set “:set nu” 显示行号。set其实有很多功能,我只用这一个
- 替换功能,语法上与sed相同 “:1,5s/cat/dog/.”,将一至五行的第一个(默认每行只替换一个,除非加参数g)cat替换成dog;“%s/cat/dog/gi”,全文,不分大小写,将cat替换为dog。
最后要说的是有时间可以执行vimtutor,是一个新手教程,不过全程E文。
阅读(404) | 评论(0) | 转发(0) |