網頁

2014年6月8日 星期日

[WorkingEnv][vim] 打造自己的工作環境-4 (copy into vim clipboard register buffer)

[主題]:
前面幾篇已經說明在tmux下如何使用mouse直接copy/paste。
這個方法不可或缺但也很多缺點:
1.  用起來慢(用起來會有點頓)
2.  要用到滑鼠(如果純鍵盤的方式,常常還是比手要移到滑鼠做操作還要快)


如果不想看基礎介紹,可以直接跳到[快速鍵設定]部份

[基礎介紹]
所以這邊介紹另外一種方法,此方法就是在Vim yank的資料直接可以copy出來用。


其實Vim也有提供直接copy到system clipboard的功能,你可以用以下的command檢查自己的Vim是否支援這個功能:
vim --version | grep clipboard


如果是  +clipboard就是支援,否則如果是-clipboard就是不支援。


如果在不支援的情況下,建議可以自己去抓最新版的vim。然後自己下以下的指令來enable clipboard的功能:
./configure --with-x --with-features=normal
make


make完就會自己裝完。(似乎不用make install也會裝上去...)
這時後再用 vim --version | grep clipboard檢查一次,應該就可以看到:
+clipboard       +iconv           +path_extra      +toolbar
+eval            +mouse_dec       +startuptime     +xterm_clipboard


這樣應該就是打開了。
這時候再進到vim裡面隨便打一段文字,然後select它,再按:
“+yy


然後這段文字就會被copy到 * register裡面(clipboard專用的register buffer),這時候可以用檢查:
:reg


就會看到* buffer裡面有你剛剛yank的文字。


然後再回到你桌面的browser或是其他GUI的編輯器按Ctrl+v,就可以把剛剛的內容貼上了。

但我們也常用到滑鼠中鍵來做copy的動作,因此為了方便起見我們可以在vmap後面加上:

let @* = @+<CR> 


請看下面...

[快速鍵設定]
接下來就可以map自己在vim的快速鍵:
vim ~/.vimrc
------------------------------------------------------------
:vmap <F2> "+yy:let @* = @+<CR> 



[使用方法]:
這樣子以後只要在vim的select mode下,再按F2 就可以將內容存到 vim 的 *以及+ register buffer中。然後就可以在任何地方用滑鼠中鍵 or Ctrl+v 貼上。


不過正常人,應該還是比較習慣ctrl+v吧。所以如果有照:vmap <F2> "+yy:let @* = @+<CR> 這樣

設定,平時的使用方法就是:

  1. 在vim的normal mode先按下V選擇自己想要的範圍。

2. 按下 F2 將所選範圍的資料copy到vim的+ and * register

3. 在你想要貼的地方按下 Ctrl + V or 滑鼠中鍵


[結論]:
上一篇我提供了一個tmux的copy/past方法,可以用滑鼠在任何地方(不一定是vim裡面)。

而在這篇我提供了一個vim的copy/past方法,copy的方式必須在vim裡面先yank而past的地方可以是任何地方(目前tmux裡面不行,可能需要一些技巧將* or + buffer的內容copy到tmux的buffer應該就可以了)。

沒有留言:

張貼留言