之前遇到了一個問題是在"某些"機器上把 Vim 升級成 7,會無法在 PieTTY 上使用右鍵貼上文字,但是在 shell 是正常的,所以很明顯的 Vim 做了一些 OOXX 的事情。
後來是經由 rafan 大告訴我們多設定一個 mouse-=a 就可以了,但是怎麼可以解決就算了,知其然不知其所以然呢?
後來看到
vim documentation, 裡面的第五點 using the mouse,才恍然大悟,原來平常使用 vim 時,就算有用滑鼠把東西 paste 進去 terminal 中,也是使用 system level 的 copy paste,vim 完全只扮演一個文字編輯器的角色,而輕點右鍵就算是"貼上"這件事情應該是 PieTTY 做的,算是 hot-key。
因為他已經寫的很詳細了,我就小小翻譯一下,做個筆記。
5. 使用滑鼠篇
要在所有 mode 中都可以使用滑鼠要設定指令如下:
:set mouse=a
除此之外 Vim 在任何模式下都不能辨認你的滑鼠。(詳情請看
這裡)
支援定位你的 cursor,也可以拿來選擇區塊和貼上等等。
在 mouse 變數中用這些參數來告訴 Vim 要在那些 mode 可以使用滑鼠。
n Normal mode
v Visual mode
i Insert mode
c Command-line mode
h all previous modes when in a help file
a all previous modes
r for |hit-enter| prompt
A auto-select in Visual mode
在預設的情況下,mouse 變數中會是空的,也就是不使用滑鼠(應該也是 Vim7 之前的情況),通常如果要使用滑鼠,你可以這樣做:
:set mouse=a
(這和設定 mouse=nvich 是一樣的)
如同上面解釋的,如果你只想在少數幾種 mode 使用滑鼠,那必須要把字母串接起來,像是:
:set mouse=nv
:set mouse=h
在 xterm 中,如果你現在在使用的 mode 有在 mouse 變數中被設定,那你按 shift 或 ctrl + 滑鼠點一下會到 xterm,如果沒有設定,那不論在什麼 mode 滑鼠點一下都會到 xterm。(這邊我也不太了 ~"~)
*xterm - clipboard*
在
Athena 和
Motif
GUI 版本中,如果跑在 terminal 上並且去存取一個 X-server,那複製-貼上的行為就會像是在 GUI,如果沒有的話,那滑鼠中鍵會 insert the unnamed
register (又看不懂了)在這個情況下,我們要複製並且貼上一段純文字會這樣做:
使用 mouse 和 Visual mode 來複製-貼上(mouse 變數要先如上設定喔)
- 在你要選的第一個文字上按住滑鼠左鍵,移動到你要選的最後一個文字在放開左鍵,這樣會是使用 Visual mode 選擇這些文字,而且會有 highlight 的效果。(我實在不想翻譯成 語法"高亮")
- 按下 y 來 yank 這些被選中的文字,放到 vim 的 register 中。
- 在你要貼上的地方按一下滑鼠左鍵,把游標移過去。
- 點滑鼠中鍵