2010年10月20日星期三

emacs技巧――语句块(括号)之间的移动和括号的自动补全


emacs是我最喜欢的编辑器,不过emacs的"门槛"比较高,所谓的"门槛"就是各种技巧了,以及无穷个特性和插件,这正式开源的吸引力所在。使用emacs会让你的输入(包括博客,写程序,论文等等)非常的有意思。总之就是把它变成你自己的编辑器,用多了你就离不开了。

我会在博客中写一些我在使用emacs时所用到的一些帮助,希望能对大家有点帮助,或者简单地当成我自己的笔记好了。

言归正传:
首先说括号的自动插入,用过eclipse或类似的IDE的人都知道,当你键入(时,eclipse会自动地添加),当然还有更高级的代码补全(emacs在这方面做得不是特别好)。emacs可以利用skeleton-pair-insert-maybe来实现,添加一下代码到.emacs中。这对编写lisp很方便但是在写c/c++ java的时候就没有多大的用处了。当然有更好用的yasnippet,但是需要按一个扩展snippet的键。什么时候空了写一个补丁把,简单的代码补全也会涉及到undo和删除,不如说你删除后面的)时候最要删除前面的(,反之亦然。

( setq skeleton-pair-alist nil)
(global-set-key (kbd "[") 'skeleton-pair-insert-maybe)
(global-set-key (kbd "(") 'skeleton-pair-insert-maybe)
(global-set-key (kbd "{") 'skeleton-pair-insert-maybe)
(global-set-key (kbd "<") 'skeleton-pair-insert-maybe)
(global-set-key (kbd "\"") 'skeleton-pair-insert-maybe)



接着讲几个在方法块间移动光标的快捷键把,网上有不上的人自己写了移动光标到匹配括号的el,但是我自己觉得都不够方便,还是看emacs自带的把:


Balanced Parentheses
You can use `M-x check-parens' to find any unbalanced parentheses and unbalanced string quotes in the buffer.

(From Emacs Manual)

一些命令和按键 ::
`C-M-f'
Move forward over a balanced expression (`forward-sexp').

`C-M-b'
Move backward over a balanced expression(`backward-sexp').

`C-M-k'
Kill balanced expression forward (`kill-sexp').

`C-M-<DEL>'
Kill balanced expression backward (`backward-kill-sexp').

`C-M-t'
Transpose expressions (`transpose-sexps').

`[email protected]'
Put mark after following expression (`mark-sexp').
在"括号"结构有关的移动
(From Emacs Manual)

一些命令和按键 ::
`C-M-n'
Move forward over a parenthetical group (`forward-list').

`C-M-p'
Move backward over a parenthetical group(`backward-list').

`C-M-u'
Move up in parenthesis structure (`backward-up-list').

`C-M-d'
Move down in parenthesis structure (`down-list').

没有评论:

发表评论