2011-11-15 50 views
16

任何人都可以幫助我: 我想弄清楚如何在不同終端(使用iterm2或mac終端)上在2個不同vim實例之間複製和粘貼文本。如果我這樣做,我可以用鼠標來做:「set mouse = a」,但我希望能夠用鍵盤來完成它。通過鍵盤在不同的mac終端之間複製並粘貼vim?

我搜索了一下,它說你可以使用「*」或「+」寄存器來複制/粘貼到/從系統剪貼板,但是當我在vim中鍵入*或+時,mac會發出其中一個聲音它會讓你無法做任何事情。我也做過「:set clipboard = unnamed」,但那也沒有奏效。

我正在使用Mac OSX 10.7(Lion)和iTerm2或Mac終端。

感謝您的幫助

+1

正如一個側面說明;當我想這樣做時,我終於意識到實現它的簡單方法不是在單獨的終端中運行兩個不同的vim實例,而是在單個vim實例中運行多個分裂或緩衝區,所以我可以只需在一個vim中查看幾個文件即可。然後它甚至不是一個問題,你可以在沒有任何特別的努力或者學習新的命令或任何東西的情況下,將這些文件之間的文本插入到你的內容中。 –

+0

要使用系統剪貼板,我用的是序列'「* y'爲粘貼而它和'」 * p'或'「* P'從它粘貼。是的,我喜歡有一個以上的窗口,通過使用'ALT-TAB'它們之間進行切換。這比使用VIM一個窗口,有一些文件2個不同的目錄中要容易得多。 – mliebelt

+0

我只用一個Vim的,並從Vim做的所有文件導航/打開通過LustyExplorer。我在一個會話中打開隱藏並通過相同的插件訪問速度非常快。使用所有緩衝區只有一個Vim允許我對我所有打開的緩衝區之間共享寄存器(並因此宏)和歷史。 – romainl

回答

17

您可以加入的:version輸出?

我可以在一個Vim的實例與yyy抽出在Terminal.app窗口中的運行,並把與pP在另外一個Vim比如在Terminal.app窗口B帶這條線在我~/.vimrc運行:

set clipboard+=unnamed 

而不使用特定的剪貼板寄存器(*+)。

爲什麼你有兩個運行在不同終端的Vim實例? SSH /地方?如果一個人在SSH會話中,則由於兩臺機器(本地/遠程)不共享相同的剪貼板,因此延伸/放置不起作用。

編輯

我懷疑的Vim沒有用正確的旗(縣)編制。顯然是這樣。

由於您使用的是Mac OS X的默認Vim,因此我認爲您不需要重新編譯它甚至編譯任何東西,因爲它通常會導致更多的問題,而不是它的價值。

取而代之,下載最新的MacVim版本,並在MacVim捆綁包中使用(CLI)Vim可執行文件:它具有與MacVim相同的功能(當然,在CLI的限制範圍內)。

此行添加到您的~/.bashrc~/.profile或無論你是用來把別名和自定義的bash功能:

alias vim='/path/to/MacVim.app/Contents/MacOS/Vim' 
+0

這裏是我的版本輸出:VIM - 六提高7.3(2010年8月15日,編制2011年6月24日20點00分09秒) 通過[email protected] 普通版本編譯沒有GUI – Eddy

+0

我試過你說的話,有2個終端窗口打開。 ,每個人都有一個vim實例。但我仍然無法將其複製並粘貼之間(即使有:設置剪貼板我的〜/ .vimrc + =未命名) – Eddy

+1

啊,我只注意到這一點的版本輸出:-xterm_clipboard。所以我想我需要重新編譯vim並啓用xterm_clipboard或其他東西?我怎麼做? – Eddy

0

如果你想整個文件複製到目標文件。

在vim中打開目標文件。

把光標移到您希望它並鍵入以下內容:

,R /path_to_file/file.ext

這將拷貝整個文件到你的光標...

+0

您可以在不同的堆棧交換站點上鍊接答案,只需添加一個帶有原始答案鏈接的評論。沒有必要通過複製粘貼來複制內容。 – oleksii