一些实用的Emacs配置文件

【感谢 iamxuxiao 的热心翻译。如果其他朋友也有不错的原创或译文,可以尝试提交到伯乐在线。】

 

以下的Emacs配置文件是我多年积累起来的,它们在我历次整理配置文件(.emacs)的过程中幸存了下来,经过了时间考验,所以现在我决定发出来和大家分享一下。虽然某些功能很有可能已经有更好的实现方法了,但是这些例子对读者学习emacs lisp还是会有帮助的。

 

在一些文本的末尾添加递增的数字

inc-num-region把一段文本中重复出现的数字替换成递增的数字

比如在emacs选中如下的文本区域

执行该函数,那么上述文本在缓冲区中变成

再比如选中如下的文本区域

执行给函数,得到

 

给代码做笔记

在我们公司使用reviewboard之前,代码审查都是面对面进行的。我曾经使用下面这个函数来帮助记录意见所对应的源文件和行号。

使用方法是,光标停在源代码的需要做批注的位置,然后执行该函数,emacs会创建一个新的叫做NOTES的缓冲区,其中记录源代码的路径和光标所在的行号,用户在接下来的区域中输入笔记。这个函数的好处是,该新建的buffer的工作模式是compilation-shell-minor-mode。所以可以直接点击其路径和行号,就可以直接打源文件跳到相应的行上去。比如

执行该函数,在新buffer中得到如下内容,在compilation-shell-minor-mode模式下,笔记前面的内容将呈现出一个链接,可以点击直接打开main.cpp

在我的.emacs中,我把这个函数和C-c、r做了绑定

 

自动给C代码头文件的首位添加ifndef和endif

get-include-guard函数在我们要编辑一个新头文件时,自动给文件添加上预处理指示符:ifndef和endif

如果我们在emacs中要新建一个文件foo.h(C-x,C-f foo.h),emacs新创建的foo.h缓冲区中看上去将是这样的

 

在foo.cpp和foo.h之间自动的切换

如果一个文件夹中同时含有foo.h和foo.cpp两个文件的话,下面的函数帮助你在这两个文件之间切换

在我的.emacs中,我把这个函数和C-c,n做了绑定

注:Reddit网友提出ff-find-other-file实现了非常类似的功能

 

c-macro模板

我们在写C++代码的时候,经常要键入一些重复的操作,比如历遍容器,try catch等等。而这些代码的特点,可以归结成一个不变的模板+几个变化参数,下面的emacs函数自动帮你扩展这个模板,打印代码。

我们先描述该函数的效果,在C++代码中插入如下待扩展的句子

然后在该行的末尾执行我们的函数,该行被自动替换成如下的C++代码

该c-macro还可以接受变长参数,比如下面的模板接受两个参数

生成的代码如下:

下面的macro将帮助用户自己打印try catch block

扩展之后将变成

下面的j-newline-and-indent是以上功能的入口函数,其将寻找光标前是否出现已定义的c-macro.在上面的例子中就是doit和api-fn。
如果出现了macro就做扩展,如果没有出现,j-newline-and-indent等于内置的newline-and-indent函数:加入新行,并且indent

下面是自定义的两个模板c-macro,读者可以根据需要定义自己的macro

1 收藏 1 评论

关于作者:伯乐在线读者

① 本账号用于发布那些在伯乐在线无账号的读者的投稿,包括译文和原创文章。② 欢迎加入伯乐在线专栏作者:http://blog.jobbole.com/99322/ 个人主页 · 我的文章 · 32

相关文章

可能感兴趣的话题



直接登录
最新评论
跳到底部
返回顶部