讓 vim 的複製貼上和其它 terminal 以及 Windows 共用 clipboard

今天從同事 P 那學到的。

目的是用 Windows 開 putty 連 Linux 工作站時, 可以在 screen 內跨 window 共用 clipboard, 也可以和 Windows 共用。比方說將程式碼貼到 Windows 下的 Gmail 時, 原本要先關掉 vsplit 並 set nonu, 才能用滑鼠正確選出要的內容, 接著貼到 Gmail。若能共享 clipboard 的話, 就能在 Linux 的 vim 內按個 20yy 複製, 回到 Gmail 裡按 ctrl+V 貼上 20 行內容。

作法如下:
  1. Windows 下要安裝 Xming X Server for Windows。裝好啟動後, 功能表旁會有個 X 的小圖示。
  2. 設定 putty: connections -> SSH -> X11 -> Enable X11 forwarding。
  3. 在 bash 下執行 xterm 測試看看, 成功的話會在 Windows 跑出一個 xterm。
  4. 重開新的 screen, 這時應該可以透過 "+ 複製貼上了。也就是說, "+yy 後, 可以到別的 screen 下其它 window 下用 "+p 貼上。也能在 Windows 下用 ctrl+c / ctrl+v 互通。
  5. 若要省掉 "+ 的步驟, 要將 clipboard 和 vim 預設 register 設成一樣的, 設法是 :set clipboard=unnamed
另外, 可以用 :reg 或 :di 顯示目前所有 register 裡存的東西, 搜 vim register 可看到一些相關介紹。

2011/02/18 更新

補充 Vim tip: Accessing the system clipboard

2011/07/13 更新

注意: vim 編譯時要支援 +clipboard 才行, 可用以下的方法檢查:
$ vim --version | grep clipboard
若有看到 +clipboard 表示有支援, -clipboard 表示沒有。Ubuntu 下要裝 vim-gui-common 才會支援, 光裝 vim-common 不會包含 +clipboard。或是 :set showcmd 時, 看看按了 "+ 後右下角有沒有出來 "+, 沒有的話表示沒打開 clipboard。

留言

這個網誌中的熱門文章

(C/C++ ) 如何在 Linux 上使用自行編譯的第三方函式庫

熟悉系統工具好處多多

virtualbox 使用 USB 裝置