ファイルマネージャまたはコマンドラインで同じVimインスタンスの新しいファイルを開くにはどうすればよいですか?

ファイルマネージャまたはコマンドラインで同じVimインスタンスの新しいファイルを開くにはどうすればよいですか?

私は通常、Vimでファイルシステムをブラウズせず、代わりにファイルマネージャを使用するか、時々古いインタラクティブシェル(コマンドライン)を使用します。

コマンドラインまたはターミナルベースのファイルマネージャ(MC、Vifm、Ranger...)からエクスポートすると、vim fileVimはターミナルを制御してシェルまたはファイルマネージャをブロックし、ナビゲーションの目的を完全に無効にします。もちろん、GUIファイルマネージャは端末で実行されていないため、これは不可能です。

一般的な解決策は、xterm -e vim file & 必要な各ファイルを独自の端末で開くことです。しかし、しばらくすると、各ファイルを含むさまざまなオープン端末が発生し、 AltTabそれを循環するのが面倒になります。

ナビゲーションユーティリティ(何でも)の新しいバッファ/タブで新しいファイルを開く方法はありますか?同じ既存のVimインスタンスはありますか?

ベストアンサー1

必ず最初にvim --version | grep clientserver返却してください+clientserver-代わりに返される場合、+機能を有効にする簡単な方法は、Gvimを使用しなくてもインストールすることです。 DebianとUbuntuにsudo apt install vim-athena インストールしてください。 Gvimをスキップしたい経験豊富なユーザーのための別のオプションは次のとおりです。フラグを使用してソースからVimを構築する--with-x=yes --disable-gui

これで準備ができたので、+clientserver次の内容でファイルを作成しますvimserver

#!/bin/sh
serv=${S:-xtvim}
if vim --serverlist | grep -qxiF "$serv"; then
    vim --servername "$serv" --remote-tab "$@"
else
    xterm -e vim -p --servername "$serv" "$@" &
fi

vimserverディレクトリに入れることを忘れないでください$PATH 実行可能にしてくださいchmod +x vimserver。別の端末を使用している場合は、マンページで新しい端末ウィンドウでコマンドを実行するのに適したフラグを見つけます1。

一部のファイルに対してテストします(複数のファイルをパラメータとして渡すことができます)。

vimserver file1 file2
vimserver file3 file4 file5
S=xyz vimserver file6

各ファイルは、「XTVIM」という同じVimインスタンスの新しいタブで開きます。ただし、file6別のインスタンス「XYZ」に移動します。新しいファイルを新しいバッファに入れるには、対応するフラグを変更して削除します--remote-tab--remote-p

説明するvimserver

この変数に割り当てられているサーバー名はservデフォルトで「xtvim」ですが、上記のように環境変数を使用して別の名前を指定できますS

servGrepがサーバーのリストで検索する正確な値です(ただし、Vimはサーバー名を大文字にするため、大文字と小文字を区別しません)。見つかった場合、サーバーはファイルをロードし、そうでない場合は新しい端末が開始され、サーバーはそれを使用します。

フォーカスリクエスト

端末は、既存のサーバーでファイルを開くとフォーカスを取得しません。インスタンス名Windowsの場合、Xdotool行を追加すると問題が解決します。

#!/bin/sh
serv=${S:-xtvim}
if vim --serverlist | grep -qxiF "$serv"; then
    xdotool search --classname "^$serv$" windowactivate
    vim --servername "$serv" --remote-tab "$@"
else
    xterm -name "$serv" -e vim -p --servername "$serv" "$@" &
fi

このオプションのおかげで、-nameXdotoolはVimウィンドウの位置を指定し、Vimウィンドウでフォーカスを要求できます。一部の端末にはこのオプションはありませんが、バージョン3.20210804.2以降、Xdotool--roleでも使用できます。search

ファイルマネージャ

ビビム

編集する~/.config/vifm/vifmrc:

filextype <text/*> vimserver %f

ビジュアルモードまたはタグ付けにより、複数のファイルを同時に開くことができます。

真夜中司令官

拡張ファイルの編集~/.config/mc/mc.ext:

type/text
 Open=vimserver %s

MCでは複数のファイルを表示することもできます。

GUIファイルマネージャ

ほとんどの場合、プロセスはテキストファイルを右クリックすることですOpen with... > Custom command line / Use a custom command。コマンドテキストフィールドにチェックボックスvimserver(ある場合)を入力して表示するか、ボタンを押してデフォルトに設定します。

キム

Gvim 2に問題がなければ心配しないでくださいvimserver。ただ使用してください gvim --remote-tab-silent

1:Gnome-terminal、Xfce4-terminal、および Terminator はこの-xフラグを代わりに使用します-e
2:Gvimの使用に関するGoldilocksのコメント クライアント - サーバーパターンの実際の用途は何ですか?

おすすめ記事