天天看點

Vim 複制粘帖格式錯亂問題的解決辦法

有時候,複制文本(尤其是代碼)到 vim,會出現格式錯亂的問題。看樣子,應該是自動縮進惹得禍。本文不去深究原因,直接給出解決方法。

<a target="_blank"></a>

運作如下指令,進入 paste 模式:

進入 paste 模式後,按 i 鍵進入插入模式,然後再粘帖,文本格式不會錯亂了。但粘帖後還需要按 進入普通模式并執行如下指令結束 paste 模式:

顯然,這樣非常麻煩。下面我們進行改進。

我們可以利用設定快捷鍵來簡化上面的兩個指令。在 ~/.vimrc 中加入如下兩行:

這樣,在普通模式下按 f10 (你也可以用自己喜歡的按鍵)就會進入 paste 模式,按 i 進入插入模式後粘帖,然後按 回到普通模式,再按 f11 結束 paste 模式。

這樣雖然友善了,但占用了兩個按鍵。下面我們繼續改進。

在 ~/.vimrc 中加入如下内容:

這樣就可以把上面的 f10 和 f11  合并為一個快捷鍵來切換 paste 模式了。

還有更好的辦法麼?當然!

關于 vim 寄存器的詳細資訊請執行指令 “:help registers” 檢視。

對于“剪切闆”這個概念,linux 下有兩個東西:一個叫做選擇緩沖區(x11 selection buffer),另一個才是剪切闆(clipboard)。滑鼠或鍵盤選擇内容時,内容實時進入緩沖區,然後按中鍵将内容插入光标所在位置;滑鼠或鍵盤選擇内容後,按ctrl-c(或shift-ctrl-c)或菜單中的“複制”,内容進入剪切闆,然後按ctrl-v(或shift-ctrl-v)或菜單中的“粘帖”将内容插入光标所在位置。關于這兩者的詳細資訊,請自行搜尋,此處不深究。

vim 的寄存器 "* 對應系統緩沖區, 寄存器 "+ 對應系統剪切闆。

如果你是把選擇的内容(在系統緩沖區中)粘帖到 vim ,隻需在普通模式下執行如下指令:

對應的,如果你是把複制的内容(在系統剪切闆中)粘帖到 vim,隻需在普通模式下執行如下指令:

怎麼樣?格式沒有錯亂了吧?

這樣雖然簡便很多了,但還是需要輸入三個字母,并且這三個字母都得使用右手小拇指輸入,甚至其中的兩個字母還需要 shift 鍵配合!

還有更簡單的辦法。

在 ~/.vimrc 裡加入如下内容:

然後隻需在普通模式下按 p 即可把系統緩沖區中的内容粘帖到 vim 中,就像粘帖用 yy 指令得到的内容一樣,并且格式不錯亂。

如果把上面的一行換成如下内容:

普通模式下按 p 粘帖的内容就是系統剪切闆裡的内容了。

這已經足夠簡便了。在搜尋此問題的過程中,我還看到了另外一些辦法。

這樣,你就可以在插入模式下使用 shift-insert 快捷鍵在粘帖系統剪貼闆中的内容了。

把上面一行替換成如下内容同樣可以達到相同的效果:

注意,這可是在插入模式下哦!比起第 5 節提到的方法,這種方法省去了一次  按鍵進入普通模式和一次 i 按鍵重新回到插入模式。

至此,你需要做的隻是:

    a. 複制你想要的内容;

    b. 回到 vim 并按 shift-insert 快捷鍵;

    c. 繼續編輯其他内容。

<a href="http://www.worldhello.net/2010/12/08/2190.html" target="_blank">vim 複制粘貼探秘</a>

<a href="http://stackoverflow.com/questions/2555559/vim-pasting-from-clipboard-and-automatically-toggling-set-paste" target="_blank">vim: pasting from clipboard and automatically toggling :set paste</a>

<a href="http://blah.blogsome.com/2006/04/27/vim_tut_register/" target="_blank">寄存器::vim進階索引[4]</a>

<b> 原文釋出時間為:2012-07-25</b>

<b></b>

<b>本文來自雲栖社群合作夥伴“linux中國”</b>

繼續閱讀