荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: xxxss.bbs@bbs.chenguang.org (尽早离去), 信区: Linux
标  题: Seven habits of effective text editing(翻译)
发信站: 交大晨光 (Sat Mar 22 17:53:58 2003)
转信站: SZU!news.tiaozhan.com!news.happynet.org!chenguang

            七个增加文本编辑效率的习惯
               Bram Moolenaar
    如果你是经常要输入大量文本,写程序和HTML,选择一个好的
文本编辑器并有效地使用它将会事半功倍。本文将介绍一些让您工作
更快并且减少错误的方法。

    开放源代码的文本编辑器Vim (Vi 改良版)是本篇要介绍的。
在其他文本编辑器上这些方法不能通用,要想有效地编辑,第一步就是
选择一个合适的编辑器。那些关于到底哪种编辑器是最好的讨论对你
来说是浪费时间而又无意义的。如果您不确切知道哪种该用,那么
尝试一下vim吧,你不会失望的.
            Part 1: 编辑文件
    1.快速移动

    大多数时间都浪费在读,检查错误和寻找正确的位置上,而不是
输入和改变内容,遍历整篇文本是经常要做的事,你应该学会快速做
到这一点。

    经常你会想搜索一个已知的字符串,或者看看全篇里哪些地方用
到了一个特定的词。你可以简单地使用搜索命令"/"来查找文字,但是
这里有更巧妙的方法。
·  如果你看到一个特定的word,并且想搜索另一个相同的word,使用
"*"命令。它将获得在光标后的相同word。
·  如果你设置了'incsearch'选项,Vim会显示出第一个适配的
字符串,当你仍然在输入它的时候。
·  如果你设置了'hlsearch'选项,Vim 会使用黄色背景高亮所有
适配的字符串,这给出了一个快速的全景。在程序代码里,这能够
告诉你一个变量被用在了哪些地方。你甚至不用移动光标到那里。

    在结构化的文本里更经常地需要快速移动。Vim 为C和C++提供了
专门的指令。
·  使用"%"从一个开始的brace跳到相对的结束的brace。或者从一个
"#if"到相对的"#endif".事实上,"%"可以在很多不同的适配词上
使用。它对于检查if()和{}这些结构非常有用。
·  使用"[{"可以跳到当前所在程序块的开始{处
·  使用"gb"跳到一个变量的声明处。

当然,还有更多。但是你需要知道这些命令。你可能会觉得自己没法
学会这么多命令--有几百个移动命令,一些简单,一些聪明--
而且需要花费数周时间去练习怎么使用他们。好了,你不需要那样,
只需要知道哪些能增加你编辑效率的命令就可以了。

三个基本步骤:
1。 当你编辑的时候,是从不断重复劳作中解脱出来还是把大量时间
浪费在这上面。
2。 找出是否有一种编辑器命令能快速完成这种动作。读文档,问
朋友,或者看看人家是怎么做的。
3。 练习这些命令。直到你不需要动脑子就可以打出他们位置。

让我们举个例子来说明:
1。 你在编辑c程序文件时,会在寻找函数定义上花费大量时间。
现在你使用命令"*"来查找在哪些地方出现那个函数名,但是会
找到大量的地方是在使用这个函数而不是声明。你会想到肯定有
方法让这件事做的更快。
2。 看了快速参考之后你发现一个谈及跳到标记的。文档说明了
怎样使用这个跳到函数声明处,正是你想要的。
3。 你找了个带标记的文件实验了这个功能,使用Vim带的ctags
程序。你学会了使用"CTRL-]"命令,这节省了你大量的时间。
为了更加简便,你在自己的Makefile加了几行自动产生tags 文件。

还有个问题需要在使用这三步时注意:
·  “我想做这件事,但我没有时间去浏览文档去找那些命令。”
如果你也是这么想的,你已经进入了stone age of computing.
一些人可以用Notepad完成所有事情,不过他们会经常迷茫:
为什么别人只需要一半时间就可以完成同样的工作。。
·  不要过分。如果你总是试图找到最好的命令去解决每一个小
事情,你会没时间去做你真正要做的事情了,挑出那些比需要的
要花费更多时间的动作,然后练习那些命令知道你下次使用他们
时不再需要去想,然后你就可以集中精神去弄文本了。

    在后面的小节中会讨论那些人们经常用到的,你可以从中得到
使用这三步的灵感。

2。不要重复输入
我们输入的words是有限的。断语和句子就更有限了。尤其是在计算机
程序中。很明显,你不想输入同一个单词两遍。

经常你会想把一个词换成另一个。如果需要在整个文件里全部进行的话,
你可以使用":s"(substitute)命令。如果只有少量的地方需要换,
一个快速的方法是使用"*"命令找到下一个出现的地方然后用"cw"
来替换文字。然后输入"n"来找到下一个字然后"."(dot)来重复
"cw"命令.

"."命令重复最后的改动。改动,在这里是指插入,删除和替换文字。
可以重复这个是非常有用的机制。如果你用它来组织你的编辑工作,
许多改动会变成只需要敲击"."就可以完成的。不过得小心在过程中
别做其他变动,因为那将会替代掉你重复得动作。你可能要用"m"
命令来标记位置
Instead you might want to mark the location with the
m command, continue your repeated change and come
back there later.
 ---这句没看懂

一些函数和变量名比较难输入。你可以不看它就快速打出
"XpmCreatePixmapFromData"么?Vim有一个让这个事情变得
简单的完成机制。他会在你正在编辑的文件里搜索单词,甚至包括
#include的文件里。你可以只输入"XpmCr",然后按CTRL-N
之后Vim就会自动扩展出"XpmCreatePixmapFromData"了。
不止是省去你打那么多字,而且还避免了出错后等编译器检查。

当你需要多次输入一个短语或者句子时,还有一个更快捷的手段。
Vim有一个机制时记录宏的。你输入"qa"开始记录到'a'。然后
你像平常那样输入命令,最后再输入一个"q"结束记录。当你
想重复那些被记录的命令时,你就输入@a.可以有26个宏记录。

使用宏记录你可以重复很多不同的动作,不止是插入文本。当你
需要重复什么的时候一定要记得这个。

当记录时一件事需要注意的是那些命令会完全按照你输入的重复。
当移到其他位置你必须记得当命令重复时你移动的文本有区别。
往左移动4个字母会
经常需要用命令来挪开单词和句子或者移动到某个特定字母。

当你需要重复的命令更加复杂时,一次输入完他们是困难的。
另一种方法是,你需要写一个script或者宏.这个在为你的部分
代码制作模版时非常有用;例如,一个函数头。你可以按照自己
喜好把这个做的更clever.

3.错误时修复

在输入时出错是常事。没人能避免。需要快速找到并修改他们。
编辑器可以帮你做到这点。但是你需要告诉他们什么是对的,什么是
错的。

经常你会犯同一个错误。你的手指不按照你的意愿去做。这里可以
用缩写来修正。一些例子:
    :abbr Lunix Linux
    :abbr accross across
    :abbr hte the
这些单词在你敲错他们时会自动修正。

同样的机制可以用在输入一个长单词时,只需要输入几个就行。
对于那些难以输入的单词尤其有用,可以避免你输错他们。例子:
    :abbr pn pinguin
    :abbr MS Mandrake Software
然而,这个也会在你不需要整个单词的时候跳出来,当你真需要
输入"MS"时就会变得很困难。所以最好用那些本身没有实际意义
的短单词来做这个。

Vim有个clever的高亮机制来查找错误。这个实际上是用来高亮程序
语法的,但是也可以同样用来抓住和高亮错误。

语法高亮彩色显示注释。这听起来似乎并不像个有用的特性,但是
当你一旦使用它你会发现他有多有用。你可以很快认出应该是注释的
文本却不是高亮的,(你或许忘记了加注释符号)。或者看到一行
代码变成了注释(你忘记了加入"*/")。这些都是一搬很难找到的错误。

语法高亮可以找到错乱的段。一个错误的")"会被用亮红底色显示。
你可以使用"%"命令来看他们底适配,并在适当位置插入"("或者")".

其他一般的错误也可以很快指出,例如使用"#included <stdio.h>"
"#include <stdio.h>"."include"是高亮而"included"不是.

一个复杂的例子:英文文本里有很长的一串单词列表。任何不在列表
内的单词都是错误的。使用一个语法文件你可以高亮所有不在列表
内的单词。使用一些额外的宏你可以添加单词到列表里,所以他们
就不会再作为错误。在vim里这个是由scripts实现的,你可以调整
它作为你自己的用处:例如,只检查注释检查拼写错误。

        Part 2: 编辑多个文件

4.一个文件很少单独编辑

我们一般很少只单独编辑一个文件,有很多相关文件,你会一个一个
编辑,或者同时编辑几个。你应该让编辑器在编辑多个文件方面更
有效率。

以前产生tags的机制也可以用来在不同文件间跳转。通常的手段是
为整个工程产生一个tags文件。你可以在工程中的所有文件中快速
跳转来寻找函数定义,数据结构,类型定义,等等。这比手动搜索
要节省太多的时间了。建立一个tags文件是我们第一件要做的事。

另一个有用的机制是在一堆文件里找到所有出现同一名字的地方。
使用":grep"命令。Vim 会建立一个所有符合的列表。并且跳到
第一个。

":cn"命令使你到每下一个适配的地方。当你需要在函数声明里
更改number of arguments时会非常有用。

include 文件包含有用的信息。但是找到包含你需要的那个就很
花时间。Vim 能分辨include 文件,并且可以可以从中搜索你
需要的单词。很一般的动作是找一个函数原型,把光标放在函数名
处并输入"[I:"Vim会列出出所有在include文件中适配的函数名。
如果你需要看更多的前后文,可以直接跳到相关声明处。相同
的命令可以用来检查你是否include了正确的头文件。


未完待续..
--
※ 来源:·交大晨光 bbs.chenguang.org·[FROM: 219.242.120.244]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店