2010-08-13 30 views
43

有沒有方法可以設置MacVim在正在運行的MacVim實例的當前窗口中打開新文件?我目前擁有MacVim首選項「在當前窗口的新選項卡中打開新文件」,但理想情況下,我只想以「:new_file」的方式打開新文件,而不使用選項卡。MacVim在現有窗口中打開文件

我的主要動機是我目前在工作流程中使用NERDTree和Bufexplorer,根本不需要標籤。我也使用PeepOpen,除了它總是打開基於MacVim的首選項的文件外,所以我可以做的最好的事情是在當前MacVim窗口中打開一個新選項卡。

+0

請確保您考慮類似以下的新答案以及其他答案:http://stackoverflow.com/a/23927976/724752 – 2015-04-09 21:32:07

回答

48
  1. 更新到的MacVim 7.3
  2. 進入常規首
  3. 在「打開文件從應用程序:」「在當前窗口中的」選擇
  4. 在這個選項下面選擇下拉菜單「和設置參數「
+20

這隻適用於在Finder中打開的文件 - 從終端執行'mvim filename.txt'仍然會打開多個窗口。請參閱[本郵件列表討論](http://vim.1045645.n5.nabble.com/How-do-I-open-a-file-from-the-Terminal-into-MacVim-s-current-window- td1220082.html) – 2011-08-29 15:07:05

+12

命令行正是我遇到的問題。總結這個鏈接:在您的.bash_profile中添加別名vi =「打開」mvim:// open?url = file:// $ 1 \「」,然後當您執行「vi foo」時,它會在新標籤中打開foo在現有的MacVim窗口中。真棒! – 2012-04-04 16:39:33

+3

我知道你也可以在當前窗口中打開'mvim --servername VIM --remote path/to/file.txt'(re:@mattb感謝指向該郵件列表討論的鏈接 )。你只需要知道窗口的名字,你可以在文件名和目錄的頂部找到 – Will 2012-08-16 18:16:38

1

這是我做到了這一點:

在VIM,有一個命令「TABO」,這使得當前選項卡的唯一標籤。我增加了以下我的〜/ .vimrc:

autocmd BufWinEnter,BufNewFile * silent tabo 

這就讓我創建一個新的緩衝或進入一個新的緩衝任何時候,當前選項卡會自動成爲唯一的選項卡。這個命令不會影響我的緩衝區,所以效果正是我想要的:在MacVim的當前實例中打開一個文件,並且不添加任何新的選項卡。

+0

這會完全禁用選項卡。 – peritus 2011-06-16 12:54:12

+0

是的,正如@peritus提到的,這根本就不是一個好的解決方案,因爲它基本上是這樣說的:「當你打開一個新緩衝區時,將當前選項卡設置爲唯一選項卡」,這將完全禁用選項卡。這對我來說很好,因爲我從來沒有使用標籤,但其他用戶應該知道。請參閱上面的@ bjorn-winckler的答案以獲得真正的解決方案。 – davertron 2011-06-20 12:48:49

+1

是的。對於那些喜歡標籤的人來說,這絕對是一個警告,但是對於我們這些使用比tab更好的方法的人來說,這是一個很大的+1 :) – kenny 2012-04-02 21:18:20

14

您也可以考慮編輯主mvim腳本的這個技巧。

Improving mvim for MacVim

這種修改是有點不太嚴重和也可以工作:

的MacVim支持分頁,但不幸的是調用`mvim多次 從在多個不同的窗口開口命令行的結果, 而不是一個窗口中的多個選項卡。我對mvim腳本進行了以下 修改以解決此問題。

以下行添加到該文件的頂部,下面的評論 部分:

tabs=true 

在文件的底部與下面的替換,如果結構:

# Last step: fire up vim. 
if [ "$gui" ]; then 
    if $tabs && [[ `$binary --serverlist` = "VIM" ]]; then 
    exec "$binary" -g $opts --remote-tab-silent ${1:+"[email protected]"} 
    else 
    exec "$binary" -g $opts ${1:+"[email protected]"} 
    fi 
else 
    exec "$binary" $opts ${1:+"[email protected]"} 
fi 

(從Open MacVim tabs from command-line

很明顯,這些都是有點欠佳B/C你會必須在進行MacVim更新時保持黑客行爲。但他們幫助我在新的Mac Vim標籤中打開終端中的多個文件。

+0

這是一個很好的解決方案。你會考慮在實際答案中加入實際的修正嗎?鏈接可能在未來消失。 – Ovesh 2013-03-25 10:51:30

+0

第二個鏈接不再有效。我想知道這個解決方案是什麼。這聽起來像我想要的那個。 – Woody 2014-09-29 21:25:25

+0

https://web.archive.org/web/20110205015906/http://webexpose.org/2008/10/13/open-macvim-tabs-from-command-line/ – natchiketa 2015-03-12 14:03:56

26

您還可以添加:

alias mvim='open -a MacVim'

.bash_profile

這似乎是對我來說最簡單的解決方案。

+4

是的 - 此加號設置「首選項」 - >「打開應用程序中的文件」到「並設置參數列表」(或者「爲每個文件設置一個選項卡」,這些選項對於那些*做*類似標籤 - 在分割窗口中打開也是一個選項)非常好,謝謝! – 2012-08-28 21:03:58

+1

新文件怎麼樣?有了這個別名,如果我輸入'vim〜/ foo',那麼終端將會出錯'The file/Users/hobbes3/foo does not exist.'。使用普通的'vim',它會創建一個名爲'foo'的新文件。 – hobbes3 2014-09-15 15:45:32

+0

@ hobbes3我發現在大多數情況下打開一個特定的文件是一個壞主意。我幾乎總是發現自己導航到一個目錄,然後執行'mvim .'。這將打開vim中的當前目錄並將工作目錄設置爲同一目錄。從那裏你可以使用':e foo'或NerdTree或者你有什麼在vim中創建新的文件。或者如果你真的想從命令行創建文件,你總是可以先觸摸〜/ foo'。 – Dan 2015-08-04 21:53:36

4

@BjörnWinckler的答案顯示瞭如何對通過finder和其他OS打開機制打開的文件執行此操作。

如果你想讓它與mvim命令一起找到mvim文件,修改在底部的線條從

if [ "$gui" ]; then 
    # Note: this isn't perfect, because any error output goes to the 
    # terminal instead of the console log. 
    # But if you use open instead, you will need to fully qualify the 
    # path names for any filenames you specify, which is hard. 
    exec "$binary" -g $opts ${1:+"[email protected]"} 
else 
    exec "$binary" $opts ${1:+"[email protected]"} 
fi 

if [ "$gui" ]; then 
    # Note: this isn't perfect, because any error output goes to the 
    # terminal instead of the console log. 
    # But if you use open instead, you will need to fully qualify the 
    # path names for any filenames you specify, which is hard. 

    #make macvim open stuff in the same window instead of new ones 
    if $tabs && [[ `$binary --serverlist` = "VIM" ]]; then 
    exec "$binary" -g $opts --remote ${1:+"[email protected]"} 
    else 
    exec "$binary" -g $opts ${1:+"[email protected]"} 
    fi 
else 
    exec "$binary" $opts ${1:+"[email protected]"} 
fi 

這將使所有文件從命令打開行也在同一個窗口中打開。

此外,如果你想將文件打開相同的緩衝區,如果該文件是在分裂的代替或已經打開添加新的選項卡

au VimEnter,BufWinEnter * NERDTreeFind你的gvimrc(所以不要與你的正常VIM干擾)

(這最後一部分需要你有安裝NERDTree)

+0

我一直在試圖做到這一點,但我找不到「mvim」文件。這是指什麼文件? – lawdawg 2015-02-08 00:46:11

1

我發現阿茲列爾的回答很好,但如果文件不存在,這是行不通的。這個小函數做同樣的事情,但你也可以創建新的文件。

mvim() { touch "[email protected]" && open -a MacVim "[email protected]"; } 

只需將它添加到您的.bash_profile。然後,您可以編輯一個新的文件foo

mvim foo 

,它會在打開一個新標籤。

+0

如果參數爲空,則上述命令不起作用。當我沒有指定文件名時,我修改了它使它打開一個無標題的文件。 'mvim(){([[-z $ @]] || touch「$ @」)&& open -a MacVim「$ @」; } ' – 2014-11-28 12:23:35

14

我個人使用這樣的命令,在這裏看到的一切,並訴諸後什麼

mvim --help 

止跌回升試驗。

我發現

mvim --remote-tab-silent foo.txt 

工作了我,然後我很快就增加了一個別名我.profile。是的,如果你沒有在選項後面輸入一個文件,但是它會打開一個空白文件而沒有任何名字?

+1

謝謝!以前的建議並沒有給我我想要的,但是這樣做了! +1 :-) – SaxDaddy 2014-08-21 01:38:18

+1

'mvim --remote-silent foo.txt'適合那些不喜歡沒有標籤的人。 – matlehmann 2015-06-26 12:16:30