用Emacs的时候,我习惯将它分成“四个局部”
怎么弄的呢?个别是先按C-x 3
分出左右两个window,再到各个window中用C-x 2
分出高低两个window——这不是我的笔误,在Emacs的术语中,用来显示一个buffer的区域就叫做一个window。而经常被人们冠名为window的、最外层的窗体,则叫做frame。
这样划分后,屡次按下C-Tab
(我把这个快捷键绑定到了命令other-window
上),便能够依照左上、左下、右上、右下的程序轮换以后聚焦的window了。
如果须要从其它window中复制内容到以后window中粘贴,操作会麻烦一点。以右上角须要左下角的内容为例:
- 按三次
C-Tab
换到左下角的window中——用快捷键是因为我不想去挪鼠标; - 按
k
或j
高低挪动光标到指标行——用k
和j
是因为用了evil-mode
插件(参见这篇文章); - 复制内容,再按一次
C-Tab
回到原来的window中粘贴。
听起来可麻烦了。
好在Emacs有一个十分好用的插件,能够把第1和第2个步骤合在一起实现。
avy
这个十分好用的插件就是avy,它提供的avy-goto-line
函数能够一步到位地实现下面的第1和第2个步骤。
用Emacs的包管理器就能够装置它
M-x package-install RET avy RET
接着要为命令avy-goto-line
绑定一个喜爱的快捷键
(global-set-key (kbd "M-g f") 'avy-goto-line)
至此便能够在Emacs中欢快地应用M-g f
来疾速跳转到以后或其它window中的行了。百闻不如一见,我来演示一番。
avy-goto-line
家喻户晓,我用org-mode来跟踪本人的学习打算,还会将摸索过程中的一些半成品代码保留到org-mode的条目中。例如,我想要将左下角的window中的三个函数的定义,复制到右上角的代码块中去
于是我先按下M-g f
,让avy
为每一行赋予一个标记
因为心愿切换到左下角的window的第一行,所以我先按下j
此时,在前一幅截图中不以字母j
开始的标记通通隐没了,而以字母j
开始的标记则只留下了从第二个字符开始的局部。
再按下字母l
,就能够将焦点切换到左下角的window,并且将光标挪动到第一行的行首了。而后只须要选中内容、复制,并返回原来的window中粘贴即可。残缺的过程如下
后记
如果在按下组合键M-g f
后,接着按下的是数字键的话,avy-goto-line
会认为使用者打算跳转到指定的行。它将在Emacs的minibuffer中持续期待输出更多的数字或按下回车。不过我不怎么用这个性能,因为我没有让Emacs显示行号,按行号来跳转对我并不不便。
浏览原文