vim作為最好用的文字編輯器之一,使用vim來編文件,寫**實在是很愜意的事情。每當學會了vim的乙個新功能,就會很大地提高工作效率。有人使用vim幾十年,還沒有完全掌握vim的功能,這也說明了vim的強大。而這樣何嘗不是一件好事呢,只要有的學習,就有的提高。
最近使用vim來寫部落格,發現在vim中貼上python**後,縮排就全亂了。仔細研究了以下,原來是自動縮排的緣故,於是做如下設定:
:set noai nosi取消了自動縮排和智慧型縮排,這樣貼上就不會錯行了。但在有的vim中不行,還是排版錯亂。
後來發現了更好用的設定:
:set paste進入paste模式以後,可以在插入模式下貼上內容,不會有任何變形。這個真是灰常好用,情不自**了一下幫助,發現它做了這麼多事:
下面的選項值不變,但卻被禁用:
怪不得之前只設定noai和nosi不行,原來與這麼多因素有關!
但這樣還是比較麻煩的,每次要貼上的話,先set paste,然後貼上,然後再set nopaste。有沒有更方便的呢?你可能想到了,使用鍵盤對映呀,對。我們可以這樣設定::
:map :set paste:map :set nopaste這樣在貼上前按f10鍵啟動paste模式,貼上後按f11取消paste模式即可。其實,paste有乙個切換paste開關的選項,這就是pastetoggle。通過它可以繫結快捷鍵來啟用/取消 paste模式。比如::
:set pastetoggle=這樣減少了乙個快捷鍵的占用,使用起來也更方便一些。
但,這是最方便的嗎?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
選擇緩衝區和系統剪下板啥子區別?讓我們繼續研究。
不同於windows,linux系統裡存在兩個剪下板:乙個叫做選擇緩衝區(x11 selection buffer),另乙個才是剪下板(clipboard)。
選擇緩衝區是實時的,當使用滑鼠或鍵盤選擇內容時,內容已經存在於選擇緩衝區了,這或許就是選擇緩衝區的由來吧。
使用下面的命令檢視選擇緩衝區的內容::
$ xclip -out如果沒有xclip命令,debian/ubuntu下可以通過如下命令安裝::
$ sudo apt-get install xclip可以使用滑鼠中鍵或鍵入shift+insert來貼上選擇緩衝區的內容。但對於有些gui程式,比如gedit,只能通過滑鼠中鍵呼叫選擇緩衝區的內容,使用shift+insert的話,呼叫的是剪下板的內容。
剪下板和windows的剪下板類似,在選擇文字內容後,執行ctrl + c或在選單裡選擇『複製』的話,這時內容才存放到剪下板裡。
使用下面的命令檢視剪下板的內容::
$ xclip -out -sel clipboard而使用剪下板的內容,則是ctrl+v。 但在有些情況下,比如gnome-terminal,不能直接使用ctrl+c,ctrl+v,這時就要用shift+ctrl+c,shift+ctrl+v代替。
好了,了解了選擇緩衝區和剪下板,下面就是實現保留格式貼上的完美解決方案:
選擇文字內容
vim普通模式下按 「*p 將選擇緩衝區中內容貼上進來
複製檔案內容
vim普通模式下按 「+ p 將剪下板內容貼上進來
這時,如果要複製的內容也是vim編輯器中的內容,那麼如何複製才更方便呢?
vim有乙個可視模式(visual mode),在此模式下可以選擇區域。可以在普通模式下鍵入v進入可視模式,也可以個性化一點,鍵入v進入行可視模式,或者鍵入ctrl+v進入列可視模式。這時移動游標就可以選擇內容了。注意這時被選內容已經實時儲存於選擇緩衝區了,當然你也可以鍵入」+y將此內容也儲存到剪下板裡,或者」ay將內容儲存到標籤為a的暫存器中。但要知道,只有前兩個中的內容可以在其他程式中使用,而a暫存器中的內容只能在該vim編輯器內使用。
也可以通過滑鼠來複製。這裡首先要開啟滑鼠模式。:
:set mouse=a這樣在普通模式下可以直接使用滑鼠選擇區域複製到選擇緩衝區。但這種情況下不能複製到剪下板。
若要使用滑鼠複製內容到剪下板,則需要做如下設定::
:set mouse=v這種情況下,除了可以像上面一樣直接使用滑鼠選擇區域複製到選擇緩衝區以外,還可以在右鍵選單中選擇「複製」來儲存到剪下板裡。但新問題又出來了。若顯示行號,也會將行號一併選擇。你會想到,這好辦呀,如果不需要行號的話,在複製前,先執行set nonu來取消行號顯示唄。
其實沒必要這樣,如果不需要複製行號的話,用在可視模式下用鍵盤來選擇不就可以嗎?
並且,從上面的討論,我們不難得出,使用選擇緩衝區比使用剪下板要方便的多,可以節省很多步驟。
所以,最終我們得到了vim檔案間複製貼上的完美方案,檔案傳輸的中轉使用選擇緩衝區。
set mouse=v複製內容到選擇緩衝區。
將選擇緩衝區中內容貼上到vim檔案:普通模式下按 「*p 。
補充:
設定vim中預設使用選擇緩衝區暫存器 「*:
set clipboard = unnamed則可以直接通過y,p和系統選擇緩衝區進行資料交換。
分類:
linux 系統有關
vim 複製貼上
傳統軟體的複製 copy 剪下 cut 貼上 paste 在vim中對應的是yank,delete和put。在vim中的複製,刪除,替換等操作的臨時內容,都會儲存在暫存器中。下面分享下vim中的暫存器和相關的基本的操作。無名暫存器 兩個雙引號,vim中叫做無名暫存器。x,s,d,c,y等操作,如果不...
vim 複製 貼上
選中某些行,可以在命令列模式下執行如下操作 v 小寫 按上下左右鍵,可以選中某些行 v 大寫 按上下鍵,這時候可以直接選中游標所在的行 ctrl v 小寫 可以選中乙個矩形區域 取消選中,這些指令如果想要消除,直接再次點選相應的快捷鍵或者esc就可以了 選中命令列以後,可以進行如下的操作進行刪除 複...
Vim 複製貼上探秘
vim作為最好用的文字編輯器之一,使用vim來編文件,寫 實在是很愜意的事情。每當學會了vim的乙個新功能,就會很大地提高工作效率。有人使用vim幾十年,還沒有完全掌握vim的功能,這也說明了vim的強大。而這樣何嘗不是一件好事呢,只要有的學習,就有的提高。最近使用vim來寫部落格,發現在vim中貼...