2010-08-13 60 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

相关问题