実行中のMacVimインスタンスの現在のウィンドウで新しいファイルを開くようにMacVimを設定する方法はありますか?私は現在MacVimの環境設定「現在のウィンドウの新しいタブで新しいファイルを開く」を設定していますが、理想的には、タブなしで「:e new_file」が機能する方法で新しいファイルを開きたいです。
私の主な動機は、ワークフローにNERDTreeとBufexplorerを現在使用しており、タブをまったく必要としないことです。私はPeepOpenも使用しています。これは、MacVimの設定に基づいて常にファイルを開くことを除いて素晴らしいので、私ができる最善のことは、新しいタブで現在のMacVimウィンドウで開くことです。
追加することもできます:
alias mvim='open -a MacVim'
あなたの.bash_profile
これは私にとって最も簡単な解決策のようです。
メインのmvimスクリプトを編集するときに、このヒントを検討することもできます。
この変更は少し厳しく、また機能します:
MacVimはタブをサポートしていますが、残念ながらコマンドラインから `mvimを複数回呼び出すと、1つのウィンドウに複数のタブが開くのではなく、複数のウィンドウが開きます。これを修正するために、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タブを開く から)
明らかに、これらは両方ともMacVimの更新を行うときにハックを維持する必要がある、少し最適ではありません。しかし、それらは私が新しいMac Vimタブでターミナルから複数のファイルを開くのを助けてくれました。
私はここですべてを見て、何を使って実験した後、私はこのようなコマンドを個人的に使用します
mvim --help
起きた。
見つけた
mvim --remote-tab-silent foo.txt
私のために働いた後、すぐに.profile
にエイリアスを追加しました。はい、オプションの後にファイルをフィードしないと、エラーが発生しますが、名前のない空のファイルを開くのは誰ですか?
@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:+"$@"}
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をインストールする必要があります)
これは私がこれを達成した方法です:
VIMには、現在のタブを唯一のタブにするコマンド「tabo」があります。以下を〜/ .vimrcに追加しました:
autocmd BufWinEnter,BufNewFile * silent tabo
これにより、新しいバッファーを作成したり、新しいバッファーに入ると、現在のタブが自動的に唯一のタブになります。このコマンドは私のバッファーに影響を与えないので、効果はまさに私が望むものです:MacVimの現在のインスタンスでファイルを開き、新しいタブを追加しないでください。
Azrielの回答は素晴らしいと思いましたが、ファイルが存在しない場合は機能しません。この小さな関数は同じことを行いますが、新しいファイルを作成することもできます。
mvim () { touch "$@" && open -a MacVim "$@"; }
.bash_profile
に追加するだけです。次に、新しいファイルfoo
を次のように編集できます
mvim foo
新しいタブで開きます。