用Emacs的時候,我習慣將它分紅「四個部分」html
怎麼弄的呢?通常是先按C-x 3
分出左右兩個window,再到各個window中用C-x 2
分出上下兩個window——這不是個人筆誤,在Emacs的術語中,用來顯示一個buffer的區域就叫作一個window。而經常被人們冠名爲window的、最外層的窗體,則叫作frame。node
這樣劃分後,屢次按下C-Tab
(我把這個快捷鍵綁定到了命令other-window
上),即可以按照左上、左下、右上、右下的順序輪換當前聚焦的window了。git
若是須要從其它window中複製內容到當前window中粘貼,操做會麻煩一點。以右上角須要左下角的內容爲例:github
C-Tab
換到左下角的window中——用快捷鍵是由於我不想去挪鼠標;k
或j
上下移動光標到目標行——用k
和j
是由於用了evil-mode
插件(參見這篇文章);C-Tab
回到原來的window中粘貼。聽起來可麻煩了。函數
好在Emacs有一個很是好用的插件,能夠把第1和第2個步驟合在一塊兒完成。學習
這個很是好用的插件就是avy,它提供的avy-goto-line
函數能夠一步到位地完成上面的第1和第2個步驟。spa
用Emacs的包管理器就能夠安裝它插件
M-x package-install RET avy RET
接着要爲命令avy-goto-line
綁定一個喜歡的快捷鍵code
(global-set-key (kbd "M-g f") 'avy-goto-line)
至此即可以在Emacs中愉快地使用M-g f
來快速跳轉到當前或其它window中的行了。百聞不如一見,我來演示一番。htm
衆所周知,我用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顯示行號,按行號來跳轉對我並不方便。