vim粘貼代碼 若是有註釋,那麼粘貼後就慘不忍睹,相似於:html
我粘貼代碼到a.cpp,內容爲:vim
//打印函數 void print_hex(const unsigned char*data,int length,int radix=16) { for(int i=0;i<length;i++){ if(i%radix==0){ printf("0x "); } printf("%02x ",data[i]); if(i%4==3){ printf(" "); } if(i%radix==radix-1){ printf("\n"); } } printf("\n"); }
其緣由是什麼呢?tcp
vim中 輸入 :set函數
發現:spa
formatoptions=croql操作系統
這個選項,但願在~/.vimrc中禁止,好比設置爲命令行
set formatoptions=tcpmMcode
可是vim不識別此行,報錯.沒法禁止這個選項....orm
通過百度搜索,發現解決方案.[比較噁心 開源軟件的就是配置文件 不人性化]htm
在粘貼前先設置進入粘貼插入模式,即不會自動縮進和連續註釋
set paste
而後再進入插入模式粘貼,結果如圖:
下面的插入模式 多了一個 paste.
在粘貼插入模式下代碼是不會自動按格式縮進的,須要使用nopaste設置回來
set nopaste
也能夠在.vimrc中設置切換的快捷鍵,好比設置F9,則能夠在.vimrc中加入:
set pastetoggle=<F9>
這樣直接在插入模式按F9就會在「-- 插入 --」模式和「-- 插入(粘貼) --」模式中切換
探祕:
最近使用Vim來寫博客,發如今Vim中粘貼Python代碼後,縮進就全亂了。仔細研究瞭如下,原來是自動縮進的緣故,因而作以下設置: :set noai nosi 取消了自動縮進和智能縮進,這樣粘貼就不會錯行了。但在有的vim中不行,仍是排版錯亂。 後來發現了更好用的設置: :set paste 進入paste模式之後,能夠在插入模式下粘貼內容,不會有任何變形。這個真是灰常好用,不由自主看了一下幫助,發現它作了這麼多事: textwidth設置爲0 wrapmargin設置爲0 set noai set nosi softtabstop設置爲0 revins重置 ruler重置 showmatch重置 formatoptions使用空值 下面的選項值不變,但卻被禁用: lisp indentexpr cindent 怪不得以前只設置noai和nosi不行,原來與這麼多因素有關! 但這樣仍是比較麻煩的,每次要粘貼的話,先set paste,而後粘貼,而後再set nopaste。有沒有更方便的呢?你可能想到了,使用鍵盤映射呀,對。咱們能夠這樣設置:: :map <F10> :set paste<CR> :map <F11> :set nopaste<CR> 這樣在粘貼前按F10鍵啓動paste模式,粘貼後按F11取消paste模式便可。其實,paste有一個切換paste開關的選項,這就是pastetoggle。經過它能夠綁定快捷鍵來激活/取消 paste模式。好比:: :set pastetoggle=<F11> 這樣減小了一個快捷鍵的佔用,使用起來也更方便一些。
還有GUI操做系統的粘貼板,粘貼到命令行的vim中,有快捷鍵嗎???事實證實,不太好用
但,這是最方便的嗎?Vimer們對高效的追求永無止境。還有其餘更好地方法嗎? 你可能想到了,vim寄存器。對,使用vim寄存器 「+p 粘貼便可。根本不用考慮是否自動縮進,是否paste模式,直接原文傳遞!: "+p 要說vim寄存器,就要從vim文件間的複製粘貼提及。 Vim 中,若要複製當前行,普通模式下按 yy 便可,在要粘貼的地方按 p 。這是vim將複製內容保存到了本身的寄存器中的緣故。若是在其餘地方執行yy,新的內容將覆蓋掉原寄存器中內容。若是想保存原寄存器中內容而同時增長新 的內容呢?這時就要在yy前增長標籤了。標籤以雙引號開始,跟着的是標籤名稱,能夠是數字0-9,也能夠是26個字母,而後就是複製操做,這樣就把複製內 容保存到該標籤寄存器裏。經過下面命令顯示全部寄存器內容:: :reg 其中注意兩個特殊的寄存器:」* 和 「+。這兩個寄存器是和系統相通的,前者關聯繫統選擇緩衝區,後者關聯繫統剪切板。經過它們能夠和其餘程序進行數據交換。 備註: 若寄存器列表裏無」* 或 「+ 寄存器,則多是因爲沒有安裝vim的圖形界面所致。Debian/Ubuntu下能夠經過安裝vim-gnome解決。 $ sudo apt-get install vim-gnome 選擇緩衝區和系統剪切板啥子區別?讓咱們繼續研究。
vim須要圖形化,纔可使用 系統 粘貼板的內容..沒辦法,vim是命令行的..只能 用第一種方法了.
在兩個vim中切換內容進行復制 粘貼,也是一件 比較噁心的事情...個人作法就是 複製到一個臨時文件,而後合併目標文件和臨時文件.在編輯...沒辦法,vim 太 "高端"了,不會用.vim/emacs讓人類的人性化科學倒退了不少啊.
在vim中 輸入
:help formatoptions
能夠查看這個幫助信息.
參考資料:
http://hi.baidu.com/luosiyong/item/40f77e21df1f798c6e2cc335
http://www.cnblogs.com/end/archive/2012/06/01/2531147.html