这是我的关于如何在Emacs中让你的手指少动几次的小技巧--使用Emacs中的键盘宏(keyboardmacros)。在你编辑任何文件时(如C源程序时)创建一个键盘宏首先键入`C-x(',当小缓冲器显示`Definingkbdmacro'时,键入任何你想自动录入的字符。例如你想录入的如下:
intmain(intargc,char**argv)
{
当你结束录入时键入:`C-x)',emacs将显示`Keyboardmacrodefined'。现在你必须给你的宏命名,以便你以后调用此宏,键入:`M-xname-last-kbd-macro'时,会提示输入宏名。在我们的例子中,就叫做`main-type'之类的吧。现在打开你的.emacs文件,移到文件尾部,键入:`M-xinsert-kbd-macro',当它问你插入宏的名字时,键入你上次取的名字。此时emacs就会自动插入生成宏的代码。
现在就可以使用`M-x<宏名>'来调用你的宏了。不过好象使用起来并不如预想的好,因为使用宏是为了减少你的击键。不过这个问题可以用定义键盘(keyboardmapping)来解决。下一步是把此宏定义到一个功能键上。
依你是否需要此宏用于所有模式,你可以使用全程设置键(global-set-key)或定义键(define-key)。
下面是一个全程设置键的例子,需要你把它加入到..emacs的尾部。
(global-set-key"\C-cm"'main-type)
如此,以后你调用emacs时,只要你键入“C-cm”时,整个代码(notreally,justthisoneline)就会显现。请注意不能使用已定义键。最合适组合键是ControlC+.
如果你只希望此宏在C模式(cc-mode)时使用,在你的c-mode-common-hook中键入如下:
(define-keyc-mode-base-map"\C-cm"'main-type)
在第一种模式中的问题是你只有有限的键用来定义,很快就会用完。而且,当你编辑一个html文件时,你不会不想到在emacs中如上例喷出'intmain'的方法。
附?给老手:应该指出的是我只是emacs的新手,到目前我仅仅使用了六个月。如上有误请不吝指教。
资料来源:Linux公报中文版
(有话要说?请给我们来信)