私は通常、Vimでファイルシステムをブラウズせず、代わりにファイルマネージャを使用するか、時々古いインタラクティブシェル(コマンドライン)を使用します。
コマンドラインまたはターミナルベースのファイルマネージャ(MC、Vifm、Ranger...)からエクスポートすると、vim file
Vimはターミナルを制御してシェルまたはファイルマネージャをブロックし、ナビゲーションの目的を完全に無効にします。もちろん、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
。
serv
Grepがサーバーのリストで検索する正確な値です(ただし、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
このオプションのおかげで、-name
XdotoolはVimウィンドウの位置を指定し、Vimウィンドウでフォーカスを要求できます。一部の端末にはこのオプションはありませんが、バージョン3.20210804.2以降、Xdotool--role
でも使用できます。search
ファイルマネージャ
ビビム
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のコメント
クライアント - サーバーパターンの実際の用途は何ですか?。