標籤:
http://www.tinylab.org/linux-terminal-and-paste-copy-under-vim/
在GUI介面下,我們可以很自由的複製粘貼。但是在字元介面下,我們不得不用滑鼠選定,然後單擊右健,選擇複製,再到別處去Ctrl-v。並且對於 那些用沒有配置過的VIM來說,VIM的粘貼板和X Window的粘貼板還不共用。這在碼字的過程中,感覺非常不流暢。下面,我們就嘗試解決這個問題。
首先我們得讓VIM和X Window共用一個粘貼板,這樣我們就可以像在GUI介面下一樣去複製粘貼了。我們可以在自己的VIM設定檔.vimrc裡添加這麼一行:
set clipboard=unamedplus
1 |
set clipboard=unamedplus |
這 行配置的意思是讓VIM把$$’+‘$$這個寄存器(粘貼板)設定為平常yank和p操作的預設粘貼板,而$$’+‘$$寄存器在VIM裡就是代表X Window的粘貼板。這樣我們就讓VIM和X Window共用一個粘貼板,再也不用擔心VIM裡複製的東西,不能在VIM外去粘貼。
但是這裡要注意,如果你下載的是基本VIM的話,按照上面的設定是無法實現預期的效果的。因為VIM基本版預設不支援X Window的粘貼板,所以你得安裝VIM完全版,或者巨型版。你可以執行如下命令去判斷你的VIM是否支援X Window的粘貼板:
vim --version | grep clipboard
1 |
vim --version | grep clipboard |
如果clipboard和xterm_clipboard帶有加號,那麼就表示支援這個特性,減號就表示不支援。
在Ubuntu下面,你應該安裝vim-gnome,而在fedora下面,你需要安裝vim-X11。
這都做完後,你會發現VIM在每次退出的時候都會清空粘貼板,而這並不是我們想要的。我們可以在VIM設定檔裡添加下面一行配置,來讓VIM在退出的時候,保留粘貼板中的內容:
autocmd VimLeave * call system("xsel -ib", getreg(‘+‘))
1 |
autocmd VimLeave * call system("xsel -ib", getreg(‘+‘)) |
這個配置其實就是在VIM每次退出的時候,運行xsel命令來把’+‘寄存器中的內容儲存到系統粘貼板中,所以這個配置要求你安裝xsel。
現在,假設我們從VIM中yank一些內容,然後退出VIM,粘貼到終端命令列上,這個時候我們可能還是得拿起滑鼠,右鍵粘貼。其實在大多數terminal中都有一個快速鍵:Ctrl-Shift-v,把內容粘貼到命令列中。這樣我們就解決了在終端下面粘貼的問題。
可能有人會問,在終端下面複製怎麼辦?這個,暫時還沒有找到很滿意的解決方案。
在LINUX終端和VIM下複製粘貼