52

実行中のMacVimインスタンスの現在のウィンドウで新しいファイルを開くようにMacVimを設定する方法はありますか?現在、MacVimの設定で「現在のウィンドウの新しいタブで新しいファイルを開く」を設定していますが、理想的には、タブなしで「:enew_file」と同じように新しいファイルを開きたいと思います。

私の主な動機は、現在ワークフローにNERDTreeとBufexplorerを使用しており、タブをまったく必要としないことです。私はPeepOpenも使用しています。これは、MacVimの設定に基づいて常にファイルを開くことを除けば素晴らしいので、現在のMacVimウィンドウで新しいタブを開いて開くのが最善の方法です。

4

7 に答える 7

54
  1. MacVim7.3にアップデート
  2. 一般設定に移動します
  3. [アプリケーションからファイルを開く:]で[現在のウィンドウで]を選択します
  4. このオプションの下のプルダウンメニューで、[引数リストを設定]を選択します
于 2010-10-15T18:10:12.327 に答える
33

次のものを追加することもできます。

alias mvim='open -a MacVim'

あなたに.bash_profile

これは私にとって最も簡単な解決策のようです。

于 2012-08-14T09:45:35.527 に答える
17

ここですべてを見て、何を試してみた後、私は個人的にこのようなコマンドを使用します

mvim --help 

起きた。

見つけた

mvim --remote-tab-silent foo.txt

私のために働いて、それから私はすぐに私のエイリアスを追加しました.profile。はい、オプションの後にファイルをフィードしないとバーフしますが、とにかく名前のない空のファイルを開くのは誰ですか?

于 2014-05-29T07:22:33.193 に答える
16

メインのmvimスクリプトの編集に関するこのヒントも検討してください。

MacVimの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の更新を行うときにハックを維持する必要があります。しかし、彼らは私が新しいMacVimタブでターミナルから複数のファイルを開くのを助けてくれました。

于 2011-01-10T17:58:39.893 に答える
4

@BjörnWincklerの回答は、ファインダーやその他の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をインストールする必要があります)

于 2012-08-27T16:23:59.753 に答える
1

これが私がこれを達成した方法です:

VIMには、現在のタブを唯一のタブにするコマンド「tabo」があります。〜/.vimrcに以下を追加しました。

autocmd BufWinEnter,BufNewFile * silent tabo

これにより、新しいバッファを作成したり、新しいバッファを入力したりするたびに、現在のタブが自動的に唯一のタブになります。このコマンドはバッファに影響を与えないので、効果はまさに私が望むものです。MacVimの現在のインスタンスでファイルを開き、新しいタブを追加しないでください。

于 2010-08-13T18:17:12.760 に答える
1

Azrielの答えは素晴らしいと思いましたが、ファイルが存在しない場合は機能しません。この小さな関数は同じことをしますが、新しいファイルを作成することもできます。

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

に追加するだけ.bash_profileです。その後、新しいファイルfooを次のように編集できます

mvim foo

新しいタブで開きます。

于 2014-05-21T11:44:01.617 に答える