emacs tip: 合理利用windmove实现buffer之间的快速切换

Written by simon on September 6, 2008 – 12:10 am

emacs tip:

合理利用windmove实现buffer之间的快速切换

Emacs是个让人越来越爱不释手的好东东,几乎所有功能都能在emacs下完成。初看起来其貌不扬的小软件,用的多了渐渐体会到它的好处来。继续记笔记,随手将一些小功能整理一下发上来,供大家学习学习,共勉。

这次讲讲emacs下的分屏和窗口切换的操作。Emacs tutorial中对这部分的描述比较简单,也很容易能看懂。这里贴出来中文版的tutorial相关部分:

窗口操作

C-x 0 : 关闭当前窗口 C-x 1 : 将当前窗口最大化 C-x 2 : 垂直分割窗口 C-x 3 : 水平分割窗口 M-o (redefined) : 在窗口之间切换; C-x o 是默认命令 C-x 5 1/2/3/0 : 对frame类似的操作 C-x < : 窗口内容右卷 C-x > : 窗口内容左卷(这两个命令在垂直分割窗口后比较有用) (C-u) C-x ^ : 加高当前窗口,如果有C-u,则每次加高4行 (C-u) C-x } : 加宽当前窗口 (C-u) C-x { : 压窄当前窗口 ESC C-v : 在其它窗口进行卷屏操作
发件人 simon

所以本blog上的这张截图就是根据上述操作来作的。这样的好处很明显──可以方便一边看文档(参考资料等)一边写东西记笔记,而不用总是alt+tab切换窗口,切换到眼晕。根据official tutorial,在这几个窗口间迅速切换是用C-x o命令(((顺便提一下,切换不同的buffer用C-x b命令)。但是麻烦之处在于,如果开了四个窗口,很可能要按三次C-x o才能指挥光标到自己想要的那个窗口中去;右手离开键盘去摸鼠标来切换又很费事不方便。所以读文档,还好找到了解决方案:可以用windmove参数来搞定它。

打开~/.emacs文档,加入如下这一行

(windmove-default-keybindings 'meta)

保存,退出。重新打开emacs,就可以实现用Meta键+方向键的上下左右来控制光标迅速进入想进入的窗口了,怎么样,是不是方便多了:)

稍稍解释一下,这段话的作用是在emacs启动时自动将windmove功能键绑定在Meta上(在现在的键盘系统上,就是alt键),如果各位觉得这个不是很方便,也可以绑定到其他键上,这样对应的meta-up meta-down meta-left meta-right作相应的调整就行了。但记得要在终端命令行中运行

emacs --debug-init

检查一下是不是存在着键位冲突的情况。

Share/Save/Bookmark

Tags:
Posted under linux | No Comments »