如果你花很多时间输入纯文本、写程序或HTML,那么通过高效地使用一个好的编辑器,你可以节省大部分时间。本文将提供指导和提示,让你更迅速地做这些工作,并且少犯错误。 本文用开源文本编辑器Vim(Vi IMproved)来演示如何高效编辑,本文方法同样适用于其他的编辑器。选择合适的编辑器,实际上是进行高效编辑的第一步。我们避免去讨论哪个编辑器最适合你,因为这个话题将占用太多篇幅。如果你不知道选用那个编辑器,或者你对目前使用的编辑器不满意,那就试试Vim;你将不会失望。
第1部分:编辑一个文件1.快速移动大部分时间都花在阅读、检查错误和寻找正确的位置去工作,而不是插入新的文本或修改它。在文本内导航非常频繁,因此你应该学会如何迅速做到这一点。 很多时候,当你希望搜索一些已存在的文本,或在所有行里寻找某个用到的单词或短语时,你可以简单地使用搜索命令、模式去找到它。但是也有更智能的方法:
在结构化的文本中还有更多可能性快速移动。Vim有针对C(以及类似语言,如C++和Java)程序的特定命令:
当然还有更多的,重点是你需要知道这些命令。你也许认为不可能了解所有这些命令——有几百种不同的移动命令,有些简单,有些非常灵活——需要花费几个星期的训练去学会它们。然而,你不需要这样做。相反,你需要知道自己具体的编辑方式,并且只学习那些能让你的编辑更高效的命令。 三个基本步骤:
让我们用例子来说明这是如何工作的:
使用这三个步骤时需要注意的一些事:
以下章节会建议一些大多数人需要去处理的动作。你可以从中受到启发,在你的工作中使用这三个基本步骤。
2.不要输入两次 我们输入的是一组有限的单词,甚至是有限的短语和句子,特别是在计算机程序中。显然,你不想把同样的东西输入两次。 很多时候,你想修改一个单词。如果是在整个文件中,你可以使用:s(substitute)命令。如果只是几个地方需要修改,一种快速的方法是使用 * 命令去找到下一个出现的单词,使用cw命令修改它。然后输入n去找到下一个单词,输入英文逗点 . 去重复cw命令。 . 命令重复上次的修改。修改在这里就是插入、删除或者替换文本。能够重复是一个非常强大的机制。如果你基于它来安排你的编辑,许多修改将变得只是敲.键。留意其间的其他修改,因为它会替代你原来要重复的修改。相反,你可以用m命令先标记这个位置,继续重复你的修改,稍后再返回到这个位置。 一些函数和变量名可以被笨拙的输入。你能快速输入“XpmCreatePixmapFromData”,不带一个错字,并且不用查询它么?Vim有一个完整的机制使它更容易。它在你正在编辑的文件里查询单词,这也包括#include文件。你可以输入“XpmCr”,然后按下CTRL-N,Vim会把它扩展为“XpmCreatePixmapFromData”。这不仅节省了输入时间,更能避免错字,并且避免稍后编译器报错时去修复它。 当你多次输入一个短语或句子时,这有一个更快捷的办法。Vim有一个录制宏的机制。你输入qa启动录制到寄存器“a”。然后像往常一样,你输入命令,最后再次按下q以终止录制。当你需要重复所录制的命令时,输入@a。一共有26个寄存器可用。 录制功能可以重复许多不同的动作,不只是插入文本。当你要重复一些东西时,记住这一点。 有一点需要注意,录制的命令将会完全按照你输入的回放。你必须知道移动的文本可能跟所重复的命令不同。左移四个字符也许适合你正在录制的文本,但是在你重复命令的地方可能需要五个字符。这往往需要使用命令移到文本对象(词,句子)或者移到一个特定的字符。 当你需要重复的命令越复杂,一次正确输入它们就越困难。不要去录制它们,相反,你应该写一个脚本或宏。这对制作你的部分代码的模板非常有用。例如,一个函数头。你可以把它做得如你所愿的灵活。
3. 错误要修正 输入时候出错很正常,没有人能够避免。关键是要迅速发现并纠正它们。编辑器应该能帮助你,但你得告诉它什么是错误的、什么是正确的。 往往你会一遍又一遍地犯同样的错误。你的手指输入的并不是你打算要做的。这可以被缩写纠正。举几个例子:
在你输入这些单词后,它们会被自动纠正。 使用相同的机制,你可以只输入几个字符来得到一个长单词。这对于那些很难输入的单词很有用,避免了输入错误。示例:
然而,当你不想扩展到完整的单词时,会觉得很困难在文本里插入“MS”。最好去使用没有字面意思的短的单词。 Vim有一个灵活的高亮显示机制在你的文本里发现错误。这实际上被用作程序的语法高亮显示,但他也可以捕获并高亮显示错误。 语法高亮用色彩显示注释。这听起来并不像一个重要的功能,然而一旦开始用它,你会发现它有很大帮助。你能够迅速发现本应该是注释却没有被高亮显示的文本(可能使你忘记了注释标记)。或者看到以行代码被高亮显示成注释(你忘记去插入一个“*/”)。这些错误很难在B&W文件里发现,并有可能浪费大量时间去调试代码。 语法高亮还可以捕获不匹配的括号。不匹配的“)”会以鲜红的高亮背景显示。你可以使用%命令去查看它们如何匹配,并在合适的位置插入一个“(”或“)”。 其他常见的错误也能被迅速发现,例如使用“#included <stdio.h>”而不是“#include <stdio.h>”,这在B&W文件里会被轻易错过的错误。但是你会很快发现“include”是高亮显示的,而“included”不会。 一个更复杂的例子:使用一个针对英语文本的、包含所有单词的长列表。不在此列内的任何单词可能是一个错字。你可以使用语法文件高亮显示所有没有包含在这个列表内的单词。你可以使用一些额外的宏来添加单词到词库,从而让它们不再被标记为错误。这就像你所期待的字处理器一样。它在Vim里用脚本实现,你可以进一步根据需要调整。例如,只去检查程序里注释的拼写错误。
|