进行有效编辑的七种习惯

2008-04-09 04:04:54来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折


进行有效编辑的七种习惯
Bram Moolenaar

如果你的很多时间是用来敲纯文本,写程序或HTML,那么有效地使用一个好的编
辑器能节省你不少时间。这篇文章里的指导和提示将有助于你更快工作,更少犯
错误。

文中采用开源文本编辑器Vim(Vi IMproved)说明有效编辑的思想,但这些思想也
适用于其他编辑器。择合适的编辑器只是有效编辑的第一步,对于哪个编辑器更
好的讨论将占很大地方,这里就不提了。如果你不知道该用哪个编辑器,或者对
现在所使用的不太满意,不妨试试Vim;你是不会失望的。

第一部分:编辑一个文件

快速定位

编辑中大部分时间是花费在阅读、查错和寻找应该进行编辑的地方上,而不是插
入新文字或进行修改。在文件中不断定位(navigate)是经常要做的,所以最好学
会如何快速地进行。

你常会搜寻文档中的一些文字。或者找出包含特定词或词组的行。你当然可以使
用搜寻命令 /pattern,不过还有更聪明的方法:

* 如果你看到一个特定词,想看看其他地方是不是出现过同样的词,可以使用
* 命令。它将对光标所指的词进行搜寻。
* 如果设置了 ' incsearch' 选项,Vim将在你正在输入搜寻模式的时候就
显示搜寻的结果(而不是等到你敲了回车之后)。这能够使你更快地找出拼写
错误。
* 如果设置了 ' hlsearch' 选项,Vim将使用黄色背景对搜寻结果进行高亮
显示。你可以对搜寻的结果一目了然。应用在程序代码中可以显示变量的所有
引用。你甚至不需要移动鼠标就能看到所有的搜寻结果。



对于结构化的文档,快速定位的办法就更多了。Vim提供专门针对C程序(以及
C 、Java等等)的特殊命令:


* 使用 %可以从开始括号跳到对应的关闭括号。或者从 ``#if'' 跳到对
应的 ``#endif''。事实上, % 可以完成许多对应项之间的跳转。可
以用来检查if()和{}结构是否平衡。
* 使用 [{可以在代码段(block)中跳回到段起始的 ``{``。
* 使用 gb 可以从引用某个变量的地方跳转到它的局部声明。



定位的方法当然不止这些。关键是你需要知道有这些命令。你也许会说不可能学
会所有命令 — Vim里有成百个定位命令,有的很简单,有的很聪明 — 这需要
几星期的学习。不过,你不必如此;你只需要了解自己的编辑特点,然后掌握相
关的定位命令就可以了。

可以采取三个基本步骤:


1. 在你进行编辑的时候,注意那些重复进行的操作。
2. 找出能快速进行这些操作的编辑命令。阅读文档,问问朋友,或者看看其他
人是如何做的。
3. 进行练习,知道熟练为止。



让我们通过以下这个例子说明一下:


1. 你发现在写C程序时,经常要查找函数定义。你目前使用 * 命令对函
数名进行搜寻,但得到的往往是函数的引用而不是函数定义。你觉得一定会
有更好的办法。
2. 读过一篇快速参考以后,你发现关于定位标记的说明,里面说明了如何定位
函数定义,这正是你要找的!
3. 你试着生成了一个标记文件,使用Vim自带的ctags程序。你学会了使用
CTRL-] 命令,发现这省了不少事。为了更方便,你在 Makefile 里加
入了几行以自动生成标记文件。



当你使用以上三个步骤时,有几点需要注意的地方:


* ``我只想完成任务,不想去读那些文档来找新的命令。''。如果你真的是这
么想的,那么你将永远停留在计算的石器时代。有些人编写什么都用
Notepad,却总不明白为什么其他人总能用他一半的时间成任务。
* 不要过分。如果你总为一点小事也要去找完美的命令,你就没法集中精力到
你本要完成的任务上了。只要找出那些耗费过多时间的操作,然后使用相关
的命令直到熟练就可以了。这以后你就能集中精力到自己的文档上了。



下面这些章节给出了大多数人遇到的操作。你仿照它们在实际工作中使用
三个基本步骤。

不要敲两次

我们所使用的字词集合是有限的。既使是词组和句子也不过是有限的几个。对于
程序来说更是如此。很明显,你不想把同样的东西敲上两遍。

你经常会想把一个词替换成另一个。如果是全文件替换,你可以使用
:s (substitute)命令。如果只是几个位置需要被替换,一个快速办法是使
用 * 命令找出下一个词,使用 cw 来进行替换。然后敲
n 找到下个词,再用 . 重复 cw 命令。

. 命令重复上一个改变。这里的改变是插入、删除或替换操作。能够重复
进行操作是个极为强大的机制。如果好好使用它,那么你大部分的编辑工作可能
只不过是敲几下 . 的事。小心不要在两次重复之间做其他修改,因为这
将改变你要重复的操作。如果确实需要如此,可以使用 m 命令记住要修
改的位置,等重复操作进行完毕之后再回过头来修改它。

有些函数名和变量名可能很难敲。你能准确无误地输入
``XpmCreatePixmapFromData''么?Vim的自动补齐机制能给你省不少事。它查看
你正在编辑的文件以及#include文件,你可以只敲入``XpmCr'',然后使用
CTRL-N 命令让Vim把它补齐为``XpmCreatePixmapFromData''。这不但节省
了输入时间,而且减少了输入的错误。

如果你有同样的词组或句子需要输入多次,还有个更简单的办法。Vim可以进行
录制宏。使用 qa 命令开始在'a'寄存器里录制宏。然后正常地输入编
辑命令,最后用 q 退出录制状态。如果你想重复所录制的命令,只需
执行 @a 命令。Vim总共提供26个这样的宏寄存器。

使用宏录制功能可以记录各种操作,不只限于插入操作。如果你想重复一些东西,
不妨一试。

需要注意的是记录的命令会被原封不动地重复执行。在进行定位时简单的重复宏
操作可能不是你想要的结果。比如对于一个词这里可能需要左移4个字符,在下
个地方可能就要左移5个字符。所以必须定位到合适的位置再重复进行宏操作。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:编程之道(转贴)

下一篇:哪位高人推荐几本关于oop理论的好书