2009-06-16 50 views
11

通過在vim中使用遠程功能,是否可以重新使用vim實例來根據需要加載多個文件。從linux終端複用vim實例

從同一個終端實例中獲取該設施將會很好。

我更渴望有一個基於選項卡界面,這在VIM 7+ 可用的情況下應該是

  1. 打開終端
  2. VIM file1.cpp
  3. 編輯 - 保存 - 按Ctrl + Z到得到提示
  4. 打開另外一個文件
    • VIM file2.cpp
  5. 現在我們有file1.cpp和file2.cpp在同一個編輯器

開放這是可能的?

回答

3

我有幾個建議給你,雖然兩者都不是你正在談論的。第一個是NERD Tree,它爲您提供了一個很好的基於樹的文件瀏覽器來打開其他文件。非常便利。我還設置了一個熱鍵(ctrl+o)爲我打開NERD Tree。我保持我在~/curr/trunk任何項目的別名,所以這總是對我的作品:

map <C-O> :NERDTreeToggle ~/curr/trunk/<CR> 

,我會建議的另一件事是用CTRL + Z做掉。它有點笨重,我認識的每個使用這種方法的人都會迷失方向,最終會在後臺運行3或4個vim。看看如何爲自己打開一個shell。我使用的是地圖; S執行shell腳本:

map ;s :!~/.vim/shell.sh<CR> 

,其執行:

#!/bin/sh 
/usr/local/bin/bash -l; 

我也有一點神奇的在我的.profile製作很明顯我在VIM :

if [ "$VIMRUNTIME" != "" ] ; then 
    export PS1="\[email protected]\h \W \t$ vim> " 
fi 

</2美分>

3

您可以分割以下列方式將當前屏幕和開放兩個(或多個)文件:

對於水平分割,做:

:sp 'filename' 

和垂直分割,這樣做:

:vsp 'filename' 

要在兩者之間選中,請按ctrl + w,然後使用箭頭鍵導航到要編輯的文件。

另外,如果你只想轉換文件(只有一個開放的),你可以這樣做:

:e 'filename' 
+0

Jack M.s的回答當然是正確的,但這是一個更簡單的解決方案。 – 2009-06-19 15:15:27

1

您可以設置hidden功能上VIM,使其能夠打開多個文件:

:set hidden 

然後你可以根據需要打開多個文件,而不打擾他們要切換每次保存一個「緩衝」:

:e 'filename' 

你有幾個命令來瀏覽緩衝區:

:bnext 
:bprev 
:buffers 

當然,如經samoz提到的,你可以分割你的屏幕上看到同一窗口上的多個緩衝區。

我建議閱讀this關於vim的好介紹,它會爲您節省很多時間。

祝你好運!

2

天兒真好,

或者,如果你想有多個文件,但同時使用整個Vim窗口的一個文件,你可以只輸入

:e 'filename' 

打開新文件。你可以多次這樣做。要查看你目前有打開,進入

:ls 

要你有打開的文件之間的反彈可以使用cntl- ^(移CNT-6)和主,副之間的交替會文件

或者你可以輸入(在文件列表中%和#所示)

:n b 

,其中n是由「LS」中展示的列表中選擇所需的文件的開頭的數字命令。

HTH

歡呼聲,

6

我不知道這是否可以在正是你指定的方式進行,但非常類似的東西大概可以使用上運行的Vim服務器來完成你的本地機器。

查看Vim中的:help remote.txt

如果您的vim版本編譯爲+clientserver,您可以使用vim創建vim服務器,然後在其上執行命令,例如,打開另一個文件。
--servername交換機可以創建一個新服務器,並且--remote交換機可以向其發送附加命令或文件。

例如

vim --servername test file1.txt 
vim --servername test --remote file2.txt 

我當時一看,我現在把它用作對Xubuntu的標準在我的電腦之一VIM沒有它,但也有一些指令here,可以幫助你,如果它已經編譯。如果不是,安裝gvim和symlinking顯然是一個選項(因爲gvim默認包含它),或者從源代碼編譯二進制文件。

編輯:
我有更多的與gvim的戲,這看起來並不可能在終端內做到這一點。 Control-Z在流程級別掛起作業。我認爲它可能適用於屏幕,但似乎沒有溝通似乎發生,除非gvim已經在圖形窗口中啓動,

+0

作爲對您的編輯的迴應,如果在C-Z之後,您對該過程進行了過濾以避免它被暫停,它會起作用嗎? – 2010-08-27 13:14:10

+0

我走了完全一樣的路線。事實上,在進行遠程調用之前,通過使用包裝腳本來使用bash的作業管理來將vim踢回生活中更進一步。它確實有效,但成功很不穩定。 – 2010-11-13 15:25:09

5

這是很容易做到,如果你編譯VIM與+clientserver,作爲Andy suggested in a previous answer

我做了以下內容:

我開始了VIM作爲服務器:

vim --servername abc 

CTRL+Z暫停它,做的:

vim --servername abc --remote ~/.cshrc 
fg 

現在VIM有~/.cshrc開放。

然後我做:

vim --servername abc --remote ~/.aliases 
fg 

現在VIM有一個緩衝帶~/.cshrc,另一個~/.aliases

然後我做:

vim --servername abc --remote-tab ~/foo_bar 
fg 

現在我VIM曾與前兩個緩衝區,並開放與~/foo_bar打開另一個選項卡一個選項卡。

在通話情況下,VIM在終端中運行,而不是GUI。