非程式員的GNU Emacs使用心得……Shell Mode 第13集 把我的 kill-ring 還給我

來源:互聯網
上載者:User

kill-ring 在 Emacs 裡面絕對是個非常精彩的設計。很多時候我都恨不能把 X Window 的 clipboard也加上一個
kill-ring。但是,很多時候當我輸入 M-y 按鍵組合回朔 kill-ring
的時候,總是會有很多很無聊的東西呆在裡頭。那些東西我可能永遠也不會把他們貼出來,因為那根本就不是什麼完整東西,很多都是一些殘破的片段而已。

但是 Emacs 最初的設計顯然是要把所有的東西都存在 kill-ring 裡面。所以他寫了那麼多裝進 kill-ring 的函數,常用的命令裡面貌似只有一個 delete-region 是可以不進 kill-ring 的。

為了方便管理和訪問這些 kill-ring 裡面的大量內容,某些牛人還專門寫了一個 browse-kill-ring 的擴充。我也安裝了這個東西。但是我還是希望我的 kill-ring 能夠更乾淨一些。只把那些我認為值得放的東西放到裡面去。


法其實也不複雜。自己寫擴充唄。把 Emacs 那些預設的編輯命令替換掉就是了。在 kill-ring
裡面最不希望放進去的內容就是一些寫錯了的內容。快速的清除和改正實際上是 Emacs 的一個巨大優勢。我曾經在很多地方和很多人開過這個
telecommunication 的玩笑。因為很多人真的是在敲錯了這個詞的時候,會不厭其煩的敲 18 次 Backspace 鍵然後再把
telecommunication 這個詞重敲一遍。在 Emacs 裡面我們當然都知道這個錯誤應該怎樣改正,對吧?我們有 M-DEL
,呵呵,是吧?就算是 vim,你要想輸入 db 快速鍵不還得先切換到命令模式麼,或者說呢,切換到命令模式也就切了,起碼比 18次
Backspace 要便宜多了,問題是 db 完了之後你還得再切回來不是嗎?

好了,不說那麼遠了。這裡其實就已經點到了問題的所在。
M-DEL 是我們最常用的對付手指抽筋的一個利器。但是,那些寫錯了的東西要佔著我的 kill-ring
這個事情就很不爽了。這個事情一定是不能忍的。不能忍怎麼辦?那就用自己的函數把 Emacs 預設的 M-DEL
替換掉,讓這些亂七八糟的東西不再進入可愛的 kill-ring 的小屋了。

代碼其實很簡單。而且既然寫一回了,就順手把 M-d 的定義也改了吧,這個雖然不是改錯用的吧,但是對我來說,單獨搞一個 word 放到 kill-ring 裡去的需求實在是很罕見了。為什麼這麼說呢?你可以看這一篇 徹底超越拷貝和粘貼 ,因為我通常是這樣做的。

閑話不說了,直接上代碼了。不能不再抱怨一句,CU 這個地方不能貼 lisp 實在是太不爽了,只好還是繼續貼圖了。。。

然後就把這兩個函數分別綁定到 M-DEL 和 M-d 的按鍵組合上,從此之後,kill-ring 就清淨了。


到這裡,有人要說,如果我真的就是要把一個 word 刪到 kill-ring 裡又該怎麼辦呢?當然了,選中那個 word 然後 C-w
這種事情。。。哈,是吧?我就不說了。OK,如果你真的需要一個 kill word,那就把 M-d
那個函數留著不換也就是了。這個世界並不是非白即黑的。生活有很多種色彩。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.