web-dev-qa-db-ja.com

既存のGvimのファイルを複数の(新しい)タブで開く

.bashrcにいくつかのエイリアスを入れて、gvimでプロジェクトファイルのグループを開きます。それぞれのタブにあります。

gvim -p <list of file names using absolute paths>

いつでも移動したいファイルのグループがいくつかある場合を除いて、これはすべて順調です(私の現在のプロジェクトでは、RailsでRubyを使用しているため、それが説明されています)。新しいタブをgvimの既存のインスタンスに追加できるかどうかは本当に素晴らしいです。最後の位置では、Vistaで作業していました。gvimで空のタブの束を開いてこれを回避し、右クリックしてファイル名を入力して[既存のNo-Name gvimで開く]を選択します。Ubuntuを使用しているため、コンテキストメニューにそのようなものはありません。コマンドラインからこれを行う方法はありますか?

43
kajaco

Vimが clientserver オプションでコンパイルされている場合は、それを実行できます。次のフラグを使用してvimインスタンスを開始します。

$ gvim --servername GVIM  # GVIM is the server name. It can be anything.

このインスタンスでさらにタブを開くには、次のコマンドを実行します。

$ gvim --servername GVIM --remote-tab file1 file2 file3 ...

Vimのclientserver機能は非常に便利です。ファイルを開くことに限定されません。コマンドラインを使用してvimにコマンドを送信するために使用できます。たとえば、vimインスタンスをリモートで閉じるには、次のコマンドを使用できます。

$ gvim --servername GVIM --remote-send '<Esc>:wqa<CR>'
70
Ayman Hourieh

Gvim内から、:tabe {file_name}と入力します。指定したファイルが新しいタブで開きます。長いファイル名を入力したくない場合は、次のことを試してください。

:tabnew
:e .

これにより、新しい空白のタブページが開き、ファイルブラウザが開きます。マウスをクリックするか、キーボードを使用できます。開くファイルをクリックするか、Enterキーを押します。キーボードを使用して、開きたいファイルの上にカーソルを置き、「t」を押してみてください。これにより、選択したファイルが新しいタブで開き、ファイルブラウザが最初のタブで開いたままになります。これは、ファイルの束を開くための高速な方法である可能性があります。

タブページを使ってできることはたくさんあります。 Vimのオンラインヘルプマニュアルの関連セクションに移動するには、:h tabpageと入力します。

20
Steve K

Windowsのコンテキストメニューで、現在開いているgvimウィンドウの新しいタブでファイルを開くことができますか?

これをtemp.regというファイルとして保存し、ダブルクリックして設定をレジストリに追加します。パスが異なる場合は、必ずvimへのパスを変更してください。

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\Shell\Open with &Vim]
[HKEY_CLASSES_ROOT\*\Shell\Open with &Vim\command]
@="\"C:\\Program Files (x86)\\Vim\\vim73\\gvim.exe\" -p --remote-tab-silent \"%1\" \"%*\""

次のようなコンテキストメニューが表示されます。

vim context menu

12
matt burns

Linuxユーザーは次の種類のスクリプトを使用できます。

#!/bin/bash

ANS=`pgrep -fx "gvim --servername GVIM"`

echo $@

if [[ ! $ANS ]]; then
    gvim --servername GVIM
fi

if [[ $1 ]]; then
    gvim --servername GVIM --remote-tab "${@}"
fi

次に、このスクリプトを使用するためにgvim.desktopファイルを編集します。

Exec=/home/user/bin/my_gvim_script.sh %F
6
Jan Valiska

これが私のgvim起動スクリプトです。これは以前の回答の延長です。すべての状況でgvimが呼び出されたときに実行されるgvimインスタンスは1つだけです。

  • gvimインスタンスが実行されていない場合、gvimはファイル名なしで呼び出されます。 gvimが起動しました。
  • gvimは、gvimインスタンスが存在する場合、ファイル名なしで呼び出されます。空の新しいタブが開きます。
  • gvimは、gvimインスタンスの有無にかかわらずファイル名で呼び出されます。ファイルを表示するタブが開きます。

これは、他のエディターの標準的な動作を模倣します。

#!/bin/bash
exec=/usr/bin/gvim  #the path to gvim
if [ $# -eq 0 ]
  then  # no filename given
    if [ -z $($exec --serverlist) ]
      then  # no filename given and no gvim instance
        $exec -f --servername GVIM > /dev/null 2>&1
      else  # no filename given, but a gvim instance exists
        $exec -f --servername GVIM --remote-send ':tabnew<CR>' > /dev/null 2>&1
    fi
  else  # filenames given
    $exec -f --servername GVIM --remote-tab "$@" > /dev/null 2>&1
fi
1

やり方がある:

n*.cpp|tab ba

または分割したい場合:

n*.cpp|sba

もっと知りたい場合:

:help ba

nが何であるかはわかりませんが、それがないと機能しません。

1
user1021852