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

來源:互聯網
上載者:User

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

 

1. paste 模式

運行如下命令,進入 paste 模式:

:set paste

進入 paste 模式後,按 i 鍵進入插入模式,然後再粘帖,文字格式設定不會錯亂了。但粘帖後還需要按 <ESC> 進入普通模式並執行如下命令結束 paste 模式:

:set nopaste

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

2. 快速鍵一

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

map <F10>:set paste<CR>map <F11>:set nopaste<CR>

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

這樣雖然方便了,但佔用了兩個按鍵。下面我們繼續改進。

3. 快速鍵二

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

set pastetoggle=<F11>

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

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

4. Vim 寄存器一

關於 Vim 寄存器的詳細資料請執行命令 “:help registers” 查看。

對於“剪下板”這個概念,Linux 下有兩個東西:一個叫做選擇緩衝區(X11 selection buffer),另一個才是剪下板(clipboard)。滑鼠或鍵盤選擇內容時,內容即時進入緩衝區,然後按中鍵將內容插入游標所在位置;滑鼠或鍵盤選擇內容後,按Ctrl-C(或Shift-Ctrl-C)或菜單中的“複製”,內容進入剪下板,然後按Ctrl-V(或Shift-Ctrl-V)或菜單中的“粘帖”將內容插入游標所在位置。關於這兩者的詳細資料,請自行搜尋,此處不深究。

Vim 的寄存器 “* 對應系統緩衝區, 寄存器 “+ 對應系統剪下板。

如果你是把選擇的內容(在系統緩衝區中)粘帖到 Vim ,只需在普通模式下執行如下命令:

"*p

對應的,如果你是把複製的內容(在系統剪下板中)粘帖到 Vim,只需在普通模式下執行如下命令:

"+p

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

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

還有更簡單的辦法。

5. Vim 寄存器二

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

set clipboard=unnamed

然後只需在普通模式下按 p 即可把系統緩衝區中的內容粘帖到 Vim 中,就像粘帖用 yy 命令得到的內容一樣,並且格式不錯亂。

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

set clipboard=unnamedplus

普通模式下按 p 粘帖的內容就是系統剪下板裡的內容了。

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

6. 快速鍵三

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

inoremap <S-Insert><ESC>:setl paste<CR>gi<C-R>+<ESC>:setl nopaste<CR>gi

這樣,你就可以在插入模式下使用 Shift-Insert 快速鍵在粘帖系統剪貼簿中的內容了。

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

inoremap <S-Insert><ESC>"+p`]a

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

至此,你需要做的只是:

  • a. 複製你想要的內容;
  • b. 回到 Vim 並按 Shift-Insert 快速鍵;
  • c. 繼續編輯其他內容。

(原文地址:http://www.cbug.org/2012/07/23/vim-copy-paste.html)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.