设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 技术文摘 查看内容

七个高效的文本编辑习惯(以Vim为例)

2013-8-15 11:16| 发布者: 红黑魂| 查看: 4165| 评论: 0|来自: 伯乐在线

摘要: 如果你花很多时间输入纯文本、写程序或HTML,那么通过高效地使用一个好的编辑器,你可以节省大部分时间。本文将提供指导和提示,让你更迅速地做这些工作,并且少犯错误。本文用开源文本编辑器Vim(Vi IMproved)来演 ...

如果你花很多时间输入纯文本、写程序或HTML,那么通过高效地使用一个好的编辑器,你可以节省大部分时间。本文将提供指导和提示,让你更迅速地做这些工作,并且少犯错误。

本文用开源文本编辑器Vim(Vi IMproved)来演示如何高效编辑,本文方法同样适用于其他的编辑器。选择合适的编辑器,实际上是进行高效编辑的第一步。我们避免去讨论哪个编辑器最适合你,因为这个话题将占用太多篇幅。如果你不知道选用那个编辑器,或者你对目前使用的编辑器不满意,那就试试Vim;你将不会失望。

 

第1部分:编辑一个文件

1.快速移动

大部分时间都花在阅读、检查错误和寻找正确的位置去工作,而不是插入新的文本或修改它。在文本内导航非常频繁,因此你应该学会如何迅速做到这一点。

很多时候,当你希望搜索一些已存在的文本,或在所有行里寻找某个用到的单词或短语时,你可以简单地使用搜索命令、模式去找到它。但是也有更智能的方法:

  • 如果你看到一个特定的单词,并想搜索它出现的其他地方,就使用命令*。它会从光标下面定位找到这个单词,并且搜索下一个。
  • 如果设置了“incsearch”选项,当你还在输入时,Vim将会显示第一个匹配模式的文本。这能迅速显示一个模式错误。
  • 如果设置了“hlsearch”选项,Vim将用黄色背景高亮显示所有匹配的模式,让你对搜索命令的结果有个快速概览。它可以显示一个变量在程序代码哪个位置被使用。你甚至不需要移动光标去看匹配的文本。

在结构化的文本中还有更多可能性快速移动。Vim有针对C(以及类似语言,如C++和Java)程序的特定命令:

  • 使用%从一个左括号跳转到与其配对的右括号,或从一个“#if”到配对的“#endif”。实际上%可以跳转到许多不同的匹配项目。它对检查if()和{}的结构完整性非常有用。
  • 使用 [{ 跳回当前代码块起始的“{”。
  • 使用 gd 从变量的调用跳转到它的局部声明。

当然还有更多的,重点是你需要知道这些命令。你也许认为不可能了解所有这些命令——有几百种不同的移动命令,有些简单,有些非常灵活——需要花费几个星期的训练去学会它们。然而,你不需要这样做。相反,你需要知道自己具体的编辑方式,并且只学习那些能让你的编辑更高效的命令。

三个基本步骤:

  1. 当你正在编辑时,留意那些重复的和(或者)花费相当多时间的动作。
  2. 寻找一个能更快完成这个动作的编辑器命令。你可以阅读文档,询问朋友,或者看看别人是怎么做的。
  3. 练习使用这个命令,直到无需思考你的手指就能输入。

让我们用例子来说明这是如何工作的:

  1. 你会发现,当编辑C程序文件时,你经常花时间寻找一个函数被定义的地方。目前你使用 * 命令去搜寻该函数名字出现的其他位置,但是最终会遍历许多函数被使用的匹配,而不是被定义的。你会想到必须得有一个更快的方法。
  2. 查阅快速参考,你会找到关于跳转到标签的注释。文档说明如何使用它去跳转到一个你在查找的函数定义。
  3. 你试验一下使用包含Vim的ctags程序去生成一个标签文件。学会使用 CTRL-] 命令后,你会发现节省了大量的时间。更容易的办法是在你的Makefile里添加几行,从而自动生成标签文件。

 

使用这三个步骤时需要注意的一些事:

  • “我想把工作做好,我没有时间去翻阅文档寻找一些新命令。”如果你这样想,你将会停留在计算石器时代。有些人什么事都使用Notepad,然后惊讶于其他人使用一半的时间完成了工作。
  • 过犹不及。如果你总是试图找到完美的命令去做每件小事情,你将没有时间去思考实际上要去做的工作。只要挑选出那些超出必要时间的动作,练习相关命令直到你在使用它们时不需要去想。然后你就可以集中精力在文本上了。

以下章节会建议一些大多数人需要去处理的动作。你可以从中受到启发,在你的工作中使用这三个基本步骤。

 

2.不要输入两次

我们输入的是一组有限的单词,甚至是有限的短语和句子,特别是在计算机程序中。显然,你不想把同样的东西输入两次。

很多时候,你想修改一个单词。如果是在整个文件中,你可以使用:s(substitute)命令。如果只是几个地方需要修改,一种快速的方法是使用 * 命令去找到下一个出现的单词,使用cw命令修改它。然后输入n去找到下一个单词,输入英文逗点 . 去重复cw命令。

. 命令重复上次的修改。修改在这里就是插入、删除或者替换文本。能够重复是一个非常强大的机制。如果你基于它来安排你的编辑,许多修改将变得只是敲.键。留意其间的其他修改,因为它会替代你原来要重复的修改。相反,你可以用m命令先标记这个位置,继续重复你的修改,稍后再返回到这个位置。

一些函数和变量名可以被笨拙的输入。你能快速输入“XpmCreatePixmapFromData”,不带一个错字,并且不用查询它么?Vim有一个完整的机制使它更容易。它在你正在编辑的文件里查询单词,这也包括#include文件。你可以输入“XpmCr”,然后按下CTRL-N,Vim会把它扩展为“XpmCreatePixmapFromData”。这不仅节省了输入时间,更能避免错字,并且避免稍后编译器报错时去修复它。

当你多次输入一个短语或句子时,这有一个更快捷的办法。Vim有一个录制宏的机制。你输入qa启动录制到寄存器“a”。然后像往常一样,你输入命令,最后再次按下q以终止录制。当你需要重复所录制的命令时,输入@a。一共有26个寄存器可用。

录制功能可以重复许多不同的动作,不只是插入文本。当你要重复一些东西时,记住这一点。

有一点需要注意,录制的命令将会完全按照你输入的回放。你必须知道移动的文本可能跟所重复的命令不同。左移四个字符也许适合你正在录制的文本,但是在你重复命令的地方可能需要五个字符。这往往需要使用命令移到文本对象(词,句子)或者移到一个特定的字符。

当你需要重复的命令越复杂,一次正确输入它们就越困难。不要去录制它们,相反,你应该写一个脚本或宏。这对制作你的部分代码的模板非常有用。例如,一个函数头。你可以把它做得如你所愿的灵活。

 

3. 错误要修正

输入时候出错很正常,没有人能够避免。关键是要迅速发现并纠正它们。编辑器应该能帮助你,但你得告诉它什么是错误的、什么是正确的。

往往你会一遍又一遍地犯同样的错误。你的手指输入的并不是你打算要做的。这可以被缩写纠正。举几个例子:

1
2
3
:abbr Lunix Linux
:abbr accross across
:abbr hte the

在你输入这些单词后,它们会被自动纠正。

使用相同的机制,你可以只输入几个字符来得到一个长单词。这对于那些很难输入的单词很有用,避免了输入错误。示例:

1
2
:abbr pn penguin
:abbr MS Mandrake Software

然而,当你不想扩展到完整的单词时,会觉得很困难在文本里插入“MS”。最好去使用没有字面意思的短的单词。

Vim有一个灵活的高亮显示机制在你的文本里发现错误。这实际上被用作程序的语法高亮显示,但他也可以捕获并高亮显示错误。

语法高亮用色彩显示注释。这听起来并不像一个重要的功能,然而一旦开始用它,你会发现它有很大帮助。你能够迅速发现本应该是注释却没有被高亮显示的文本(可能使你忘记了注释标记)。或者看到以行代码被高亮显示成注释(你忘记去插入一个“*/”)。这些错误很难在B&W文件里发现,并有可能浪费大量时间去调试代码。

语法高亮还可以捕获不匹配的括号。不匹配的“)”会以鲜红的高亮背景显示。你可以使用%命令去查看它们如何匹配,并在合适的位置插入一个“(”或“)”。

其他常见的错误也能被迅速发现,例如使用“#included <stdio.h>”而不是“#include <stdio.h>”,这在B&W文件里会被轻易错过的错误。但是你会很快发现“include”是高亮显示的,而“included”不会。

一个更复杂的例子:使用一个针对英语文本的、包含所有单词的长列表。不在此列内的任何单词可能是一个错字。你可以使用语法文件高亮显示所有没有包含在这个列表内的单词。你可以使用一些额外的宏来添加单词到词库,从而让它们不再被标记为错误。这就像你所期待的字处理器一样。它在Vim里用脚本实现,你可以进一步根据需要调整。例如,只去检查程序里注释的拼写错误。

 


酷毙
1

雷人

鲜花

鸡蛋

漂亮

刚表态过的朋友 (1 人)

  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部