MacVim打开文件在现有的窗口

有没有办法设置MacVim在正在运行的MacVim实例当前窗口中打开一个新文件? 我目前有MacVim首选项“在当前窗口的新选项卡中打开新文件”设置,但理想情况下,我只想按照“:e new_file”的方式打开新文件,没有选项卡。

我的主要动机是我目前使用NERDTree和Bufexplorer作为我的工作stream程,根本不需要标签。 我也使用PeepOpen,除了它总是打开基于MacVim的首选项的文件,所以我能做的最好的就是在当前的MacVim窗口中打开一个新的标签。

  1. 更新到MacVim 7.3
  2. 进入一般首选项
  3. 在“从应用程序打开文件”下select“在当前窗口”
  4. 在这个选项下面的下拉菜单中select“并设置参数”

您还可以添加:

alias mvim='open -a MacVim'

到您的.bash_profile

这对我来说似乎是最简单的解决scheme。

您也可以考虑编辑主要的mvim脚本。

改进mvim for MacVim

这种修改是不太严重,也有效:

MacVim支持制表符,但不幸的是从命令行多次调用`mvim会导致多个单独的窗口打开,而不是一个窗口中的多个制表符。 我对mvim脚本进行了以下修改,以解决此问题。

将以下行添加到注释部分下面的文件顶部:

 tabs=true 

将文件底部的if结构replace为以下内容:

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

( 从命令行中打开MacVim选项卡 )

显然,这些都是有点欠佳的B / C,你必须保持黑客,当你做MacVim的更新。 但他们帮助我在新的Mac Vim标签中打开terminal中的多个文件。

我亲自使用这样的命令,看到这里的一切,并试图做什么

 mvim --help 

出现。

我find

 mvim --remote-tab-silent foo.txt 

为我工作,然后我很快添加了一个别名到我的.profile 。 是的,如果你没有在选项后面input一个文件,但是谁又打开一个空白的文件?

@BjörnWinckler的答案显示了如何通过finder和其他操作系统打开机制来打开文件。

如果你想让它和mvim命令一起使用,可以findmvim文件,并从底部改变它的行

 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:+"$@"} else exec "$binary" $opts ${1:+"$@"} 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:+"$@"} else exec "$binary" -g $opts ${1:+"$@"} fi else exec "$binary" $opts ${1:+"$@"} fi 

这将使所有从命令行打开的文件也在同一个窗口中打开。

此外,如果您希望文件打开相同的缓冲区,如果该文件已打开,而不是分裂或添加一个新的选项卡

au VimEnter,BufWinEnter * NERDTreeFindfind你的gvimrc(所以不要干扰你的常规vim)

(这最后一部分需要你安装NERDTree)

我是这样做的:

在VIM中,有一个命令“tabo”,它使当前标签成为唯一标签。 我把以下内容添加到我的〜/ .vimrc中:

 autocmd BufWinEnter,BufNewFile * silent tabo 

这使得当我创build一个新的缓冲区或input一个新的缓冲区时,当前的选项卡自动成为唯一的选项卡。 这个命令不会影响我的缓冲区,所以效果正是我想要的:在MacVim的当前实例中打开一个文件,并且不添加任何新的选项卡。

我发现Azriel的答案很好,但是如果文件不存在,它就不起作用。 这个小函数做同样的事情,但你也可以创build新的文件。

 mvim () { touch "$@" && open -a MacVim "$@"; } 

只需将其添加到.bash_profile 。 然后你可以编辑一个新的文件foo

 mvim foo 

并会在新标签中打开。