有没有办法设置MacVim在正在运行的MacVim实例的当前窗口中打开一个新文件?我目前有MacVim首选项“在当前窗口的新选项卡中打开新文件”设置,但理想情况下我只想以“:e new_file”的方式打开新文件,没有选项卡。
我的主要动机是我目前使用NERDTree和Bufexplorer作为我的工作流程,根本不需要选项卡。我也使用PeepOpen,它很棒,除非它总是根据MacVim的首选项打开文件,所以我能做的最好的事情就是在当前的MacVim窗口中打开一个新选项卡。
答案 0 :(得分:51)
答案 1 :(得分:28)
您还可以添加:
alias mvim='open -a MacVim'
到.bash_profile
这对我来说似乎是最简单的解决方案。
答案 2 :(得分:15)
在看到这里的所有内容并尝试使用
之后,我个人会使用这样的命令mvim --help
出现了。
我找到了
mvim --remote-tab-silent foo.txt
为我工作,然后我很快为我的.profile
添加了一个别名。是的,如果您在选项后没有提供文件,那么它是barfs,但是谁打开了一个没有名字的空白文件呢?
答案 3 :(得分:14)
您可能还会在编辑主mvim脚本时考虑此提示。
这种修改不那么严重,也有效:
MacVim支持标签,但遗憾的是多次调用`mvim 从命令行导致多个单独的窗口打开, 而不是在一个窗口中的多个选项卡。我做了以下 修改mvim脚本以纠正此问题。
将以下行添加到文件顶部,在评论下方 部分:
tabs=true
使用以下内容替换文件底部的if结构:
# 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你必须维持黑客攻击。但他们在新的Mac Vim标签中帮助我从终端打开多个文件。
答案 4 :(得分:4)
@BjörnWinckler的回答向您展示了如何通过finder和其他操作系统开放机制打开的文件。
如果您希望它与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:+"$@"}
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 * NERDTreeFind
到你的gvimrc(所以不要干扰你的常规vim)
(这最后一部分要求你安装NERDTree)
答案 5 :(得分:1)
这就是我完成这个的方法:
在VIM中,有一个命令“tabo”,它使当前选项卡成为唯一的选项卡。我将以下内容添加到〜/ .vimrc中:
autocmd BufWinEnter,BufNewFile * silent tabo
这使得无论何时创建新缓冲区或输入新缓冲区,当前选项卡都会自动成为唯一的选项卡。此命令不会影响我的缓冲区,因此效果正是我想要的:在MacVim的当前实例中打开一个文件,不要添加任何新选项卡。
答案 6 :(得分:1)
我发现Azriel的答案很棒,但如果文件不存在则无效。这个小功能可以做同样的事情,但你也可以创建新文件。
mvim () { touch "$@" && open -a MacVim "$@"; }
只需将其添加到.bash_profile
即可。然后,您可以将新文件foo
编辑为
mvim foo
它将在新标签页中打开。