2016-07-27 180 views
0

基本上,我需要怎麼做這裏描述的是什麼的相反建議:如何禁用vim粘貼到/從系統剪貼板?

How to make vim paste from (and copy to) system's clipboard?

不想 VIM覆蓋系統剪貼板,當我刪除編輯器中的東西。對我來說,通常的工作流程是用鼠標選擇一段代碼(讓我們稱它爲#1),然後轉到另一段代碼(讓我們稱之爲第二段),在可視模式中選擇第二段代碼vim,使用「c」刪除它,並使用鼠標中鍵粘貼第一塊。用新的行爲,而不是粘貼第一塊我粘貼第二塊。

在vim 7.2我可以做到這一點,但在vim 7.4我不能。由於正確的C++ 11語法突出顯示,我想使用7.4,但這種更改的默認行爲正在讓我失望。

我認爲,它有事情做與「+ xterm_clipboard」和/或「+剪貼板」 VIM的功能(VIM --version),我需要以某種方式改變他們「-xterm_clipboard」和/或「-clipboard」。我嘗試用選項「--with-x = no」重新編譯vim 7.4,但不知怎的,它沒有幫助。

請幫助我禁用在VIM中默認複製/粘貼到系統剪貼板。

謝謝!

+0

你有兩種選擇。首先,最好避免使用剪貼板註冊。其次,映射它或將其設置到其他寄存器。 :) – SibiCoder

回答

1

好了,回答您的標題的問題,你可以做

:set clipboard= 

這將使vim使用它的內部寄存器而不是系統。

但實際上,這種行爲與系統剪貼板無關。這更多的是對vim寄存器的一般誤解。

Vim默認爲「剪切」而不是「刪除」。這意味着每個刪除命令(cd)都會同時跳轉到未命名的寄存器。爲了解決這個問題,只需使用黑洞寄存器,例如使用"_c"_d而不是僅僅做cd

9. Black hole register "_    *quote_* 
When writing to this register, nothing happens. This can be used to delete 
text without affecting the normal registers. When reading from this register, 
nothing is returned. {not in Vi} 

爲了使這一針對特定情況下的默認行爲,你可以做

xnoremap c "_d 

的「x」在「xnoremap」是指該映射適用於Visual模式(V)和選擇模式(用鼠標)

Related SO link

+0

(這是對以前版本的回覆的評論)非常感謝! **「:set clipboard =」**爲我做的訣竅:)如果你將你的回答反轉回來,建議我「:set clipboard =」,我會接受它;) –

+0

@ S.V很高興我能幫上忙!另外,如果你還有更多的問題,那麼你也知道,還有一個[專門的vim站點](http://vi.stackexchange.com/)。 – DJMcMayhem

+0

謝謝!事實上,我不知道http://vi.stackexchange.com/ - 不知何故,我的谷歌搜索引導我到了這裏,而不是專門的vim站點。 –