remote.txt For Vim バージョン 9.2. Last change: 2026 Jun 05
VIM リファレンスマニュアル by Bram Moolenaar
Vimクライアントサーバー通信 client-server
1. 共通機能 clientserver
2. X11特有の項目 x11-clientserver
3. Win32特有の項目 w32-clientserver
4. ソケットサーバー固有の項目 socketserver-clientserver
==============================================================================
1. 共通機能 clientserver
オプション+clientserverでコンパイルした時には、Vimはコマンドサーバーとして動
作することができる。それによりクライアントからメッセージを受け取りそれを実行す
ることができる。同時に、Vimはクライアントの機能も持ち合わせVimサーバーへメッ
セージを送ることもできる。
以下のコマンドライン引数が利用できる:
引数 意味
--remote [+{cmd}] {file} ... --remote
ファイルをリモートのVimで開く。Vimサーバーが無
い時には、ローカルで実行される。オプションで
+{cmd}に一つだけExコマンドを指定できる。コマン
ドは "|" でつなげて複数指定できる。コマンドラ
インの残りの部分はファイルのリストとして扱われ
る。だからファイルではない引数はこれよりも前に
書かなければならない。
この方法で標準入力を開くことはできない--。
次のようにしなければリモートのVimが問題を起こ
すかもしれない。
--remote-silent [+{cmd}] {file} ... --remote-silent
上と同様、しかしサーバーが存在しなくてもエラー
を報告しない。指定したファイルがすでにローカル
で編集中であっても同様。
--remote-wait [+{cmd}] {file} ... --remote-wait
--remoteと 同様、しかしリモートVimでファイルが
完了(解放)されるまで待つ。
--remote-wait-silent [+{cmd}] {file} ... --remote-wait-silent
--remote-wait と同様、しかしサーバーが存在しな
くてもエラーを報告しない。
--remote-tab
--remote-tab --remote と同様、しかし各ファイルを新しいタブ
ページで開く。
--remote-tab-silent
--remote-tab-silent --remote-silent と同様、しかし各ファイルを新し
いタブページで開く。
--remote-tab-wait
--remote-tab-wait --remote-wait と同様、しかし各ファイルを新しい
タブページで開く。
--remote-tab-wait-silent
--remote-tab-wait-silent --remote-wait-silent と同様、しかし各ファイル
を新しいタブページで開く。
--servername
--servername {name} サーバー名{name}になる。--remote コマンドのど
れか1つと併用すると、デフォルトのサーバーでは
なく{name}で指定されるサーバーに接続する(下を
参照)。使用される名前は大文字になる。ソケット
サーバーを使用する場合は、パスを指定できる。詳
細については socketserver-name を参照。
--remote-send
--remote-send {keys} サーバーに{keys}を送信して終了する。{keys} に
マップは適用されない。特殊キー名が使用できる。
例: "<CR>" は CR 文字になる。
--remote-expr
--remote-expr {expr} サーバーに{expr}を実行評価させ、その結果を標準
出力に印刷する。
--serverlist
--serverlist サーバー名のリストを表示する。
--clientserver
--clientserver {method} 指定されたメソッド {method} をクライアントサー
バー機能のバックエンドとして使用する。
"socket"、"x11" または "mswin" のいずれかを指
定できる。
$VIM_CLIENTSERVER
環境変数 "$VIM_CLIENTSERVER" が設定されている
場合、Vim はその値を --clientserver 引数と同様
に解釈する。この変数が設定されており、かつコマ
ンドラインで --clientserver が指定されている場
合は、--clientserver が優先される。
{Vim が +X11 と +socketserver の両方の機能
付き、または MS-Windows では +socketserver
でコンパイルされたときのみ有効}
使用例
既に起動しているgvimサーバーで "file.txt" を編集する:
既に起動しているFOOBARという名のサーバーで "file.txt" を編集する:
既に起動しているFILESという名のサーバーがあれば、FILESで "file.txt" を編集する
が、無ければ自分がFILESになる:
--remoteの後の全ての引数がファイル名として解釈されるので動作しない:
リモートサーバーで "+foo" という名のファイルを編集する("./" により先頭の "+"
の特別な意味が無効化されていることに注目):
"BLA" という名のリモートサーバーで編集中の全てのファイルを保存して終了する:
サーバー名 client-server-name
デフォルトではVimは自分が起動された時の名前(gvim, egvim ...)のサーバーになろう
とする。これは引数 --servername で変更できる。指定した名前が利用できない場合に
は、利用できる名前になるように後置名が付加される。例えば、1つのX-Serverで2つ目
のgvimを起動したときには "gvim1" というようになる。その時のサーバー名へは組み
込み変数v:servernameによりアクセスできる。サーバー名の大文字小文字は区別され
ないので、"gvim" と "GVIM" は同じとみなされる。Note ソケットサーバーが使用され
ている場合、いくつかの違いがあることに注意。socketserver-differences を参照。
Vimが引数 --remote や --remote-wait または --remote-send で起動された時には、
上記のようにその名前で起動されたサーバーを探そうと試みる。正確に一致するサー
バーがなかった時には、数字の後置名を付けて見つかった最初のサーバーを使用する。
引数 --servername に数字の後置を付けた名前を指定した場合には、それは正確に一致
するものだけを対象とする。
サーバーが見つからなく、--remote か --remote-wait が使われた時には、Vimは残り
のコマンドラインに従い起動し、そのファイルの編集セッションを自分自身で取り持
つ。この方法ならgvimはコマンドを送信する時に、既に別のgvimが起動しているかどう
かを知る必要は無い。
引数 --serverlist はVimに登録(実行)されている全てのコマンドサーバーを、標準出
力(stdout)に印刷して終了する。ソケットサーバーが使用されている場合は注意点があ
る。socketserver-differences を参照。
{server}
引数 {server} はいくつかの関数で使われる。これが空文字列の場合、Unix ではデフォ
ルトのサーバー名として "GVIM" が使用される。MS-Windows では空文字列は動作しな
い。
Win32 NOTE: Vimサーバーをアクティブアプリケーション(トップウィンドウ)にするこ
とは、MS-Windowsがそれを許していないので必ずしも成功するわけではない。クライア
ントは引数 --remote や --remote-wait を使用しサーバー名が "g" で始まる時には、
サーバーをアクティブアプリケーションにすることを試みる。
リモート編集
引数 --argument は残りのコマンドラインから:dropコマンドを構成することを引き
起こし、それを上記の方法で送信する。
引数 --remote-wait は同じ事をして、加えて全てのファイルの編集の完了を待つよう
に設定される。これはBufUnloadイベントを使用し、だからファイルがアンロードされ
るとすぐに、Vimはファイルの編集が完了したと判断する。
引数 --remote と --remote-wait は残りのコマンドライン全てを自分のものとして扱
うことに注意。言い換えれば残り全ての引数はファイル名とみなされる。そこにオプ
ションを置くことはできない!
Vim script 関数
E240 E573
Vim script にはコマンドサーバーを操作するために幾つか関数がある。詳細な解説は
builtin.txtを参照するか、関数名の上でCTRL-]を使って完全な解説を参照すること。
概要 説明
remote_startserver( name) サーバーを開始する
remote_expr( server, string, idvar) 式を送信する
remote_send( server, string, idvar) キーシーケンスを送信する
serverlist() 利用可能なサーバーのリストを得る
remote_peek( serverid, retvar) 結果文字列の有無確認する
remote_read( serverid) 結果文字列を取得する
server2client( serverid, string) 結果文字列を送信する
remote_foreground( server) サーバーを前面に移動する
CTRL-\_CTRL-Nの説明も参照。キーシーケンスの先頭に使用すると便利。
server2client()で使用するサーバーIDはexpand("<client>")で取得できる。
==============================================================================
2. X11特有の項目 x11-clientserver
E247 E248 E251 E258 E277
クライアントとサーバー間の通信はXサーバーにより行われる。Vimサーバーのディスプ
レイを指定する必要がある。Xサーバーの通常の保護機能が使われており、通信が成り
立つためにはそのXサーバーでウィンドウを作成できなければならない。異なるマシン
間での通信も可能である。
デフォルトでは、GUI Vim は X サーバーに名前を登録して送信された文字列を実行で
きるように備える。Vim はクライアントとしても振舞い、同じ X11 ディスプレイで動
作する別の Vim インスタンスに文字列を送ることができる。
X11のGUI Vim(gvim)が起動すると、ルートウィンドウの 'VimRegistry' プロパティに
送信サーバー名を登録しようと試みる。
X11ディスプレイにアクセスできる非GUIのVim(xterm-clipboardが有効になっている)
も、サーバー名が引数 --servername で明示的に与えられるか、Vim が
+autoservername 機能付きでビルドされている場合は、コマンドサーバーとして振舞
うことができる。
引数 --servername に空のサーバー名を与えればコマンドサーバー機能を無効にできる。
異なるアプリケーションからVimサーバーへコマンドを送るには、使われているプロト
コルの幾つかのヒントを含むソースコードsrc/if_xcmdsrv.cを参照のこと。
==============================================================================
3. Win32特有の項目 w32-clientserver
全てのWin32版Vimはコンソールもサーバーとして動作できる。OLEを組み込んでコンパ
イルする必要は無い。どのMS-Windowsでも動作する、Windowsメッセージが使用されて
いる。しかしネットワークを通じてやり取りすることはできない。
MS-Windowsメッセージを使っているから、どのようなアプリケーションでもVimサーバー
と通信することができる。加えてOLEの機能を使うこともできるole-interface。
gvimを使っている時には、--remote-wait は以下のようにしないと正しく動作しない:
==============================================================================
4. ソケットサーバー固有の項目 socketserver-clientserver
E1564 E1565 E1566
NOTE: パッチ 9.2.511 以前のバージョンの Vim は、チャネルと JSON をベースにした
新しいソケットサーバーバックエンドと互換性のない、異なるソケットサーバーバック
エンドを使用している。
クライアントとサーバー間の通信は、内部的にチャネルを使用して行われる。従来型の
汎用クライアントサーバー命名規則(Unix でのみ使用可能)を使用する場合、ソケッ
トは使用可能な順に以下のディレクトリに配置される:
1. 環境に $XDG_RUNTIME_DIR が設定されている場合は "$XDG_RUTIME_DIR/vim"。
2. "$TMPDIR/vim-[uid]"。ここで "[uid]" はユーザーの uid である。このディレ
クトリのアクセス権限は 700 に設定され、ユーザーのみが読み書きできる。
$TMPDIR が設定されていない場合は、"/tmp" が使用される。
socketserver-name
サーバー id/名前を指定する際は、汎用名、絶対パス、または相対パスで指定できる。
サーバー id が "/" (絶対パス) または "./" または "../" (相対パス) で始まる場
合、ソケットへのパスとして扱われる。それ以外の場合、サーバー id は上記の共通
ディレクトリに配置されるソケットのファイル名になる。Note サーバー id/名前をパ
スとして指定する場合、スラッシュ "/" のみを含めることができる。"abc/dir" のよ
うな名前は無効である。この機能は Unix でのみ使用可能である。
socketserver-address
さらに、ソケットサーバーはチャネルアドレスとして作成することもできる。そのため
には、アドレスの前に "channel:" を付ける (この部分は無視される)。これは Unix
と MS-Windows の両方で使用可能で、Windows ではソケットサーバーバックエンドの命
名方法としてのみ使用できる。note ch_listen() には制限があり、TCP ソケットに
はポート番号しか使用できないことに注意。
名前の前にs "name:" を付けると、従来のサーバー名の動作が使用されるため、
"name:VIM" は "VIM" と同じになる。
Vim が +autoservername 機能付きでコンパイルされていない限り、X11 と同様にソ
ケットサーバーを明示的に起動する必要がある。これは、X11 GUI 版の Vim を使用し
ている場合を除く。
ソケットサーバー機能は、GTK GUI 版とターミナル版の両方の Vim で使用できる。Vim
が +autoservername 機能付きでコンパイルされていない場合、GUI 版であっても
X11 と同様にソケットサーバーを明示的に起動する必要がある。
Vim がクラッシュしたり、正常に終了しなかったりした場合、ソケットサーバーはソ
ケットファイルを削除せずそのまま残す。これは通常問題にはならない。ソケット名が
既に使用されている場合、Vim はそのソケットがデッド (どのプロセスにも接続されて
いない) かどうかを確認し、新しい名前を探す代わりに既存のソケットを置き換えるこ
とができるためである。
別のアプリケーションから Vim ソケットサーバーにコマンドを送信するには、ソース
ファイル src/os_unix.c を読むこと。そこには、使用されるプロトコルの詳細な説明
がある。これは Unix にのみ関係する情報である。
socketserver-differences
機能の大部分は、他のクライアント/サーバーバックエンドと同じである。
ただし、サーバー ID またはクライアント ID は、X11 や MS-Windows のように数値
(16進数で表示) ではなく、ソケットへの絶対パスになる。これは、v:servername 変
数で確認できる。名前がチャネルアドレスの場合は、"a/" プリフィックスが付いたア
ドレスになる。
Note --remote-wait を使用する場合、クライアント ID は "t/<何らかの数値>" の
ようになる。この命名規則はこのコマンド専用であり、これをアドレスとして使用しよ
うとすると失敗する。
Unix の場合、--serverlist 引数は X11 と同様に動作するが、上記の共通ディレク
トリのみをチェックする。ソケットにカスタムパスが使用されている場合、例えば、
--serverlist で指定された Vim プロセスの $XDG_RUNTIME_DIR あるいは <$TMPDIR
または /tmp>/vim に含まれないパスは検出されない。
MS-Windows の場合、--serverlist 引数は何も出力しない。
Unix または MS-Windows 上では +socketserver 機能が自動的に有効にな
り、+channel 機能が有効になる。
socketserver-x11
Vim が +socketserver と別のクライアントサーバーバックエンドの両方でコンパイ
ルされている場合、使用するバックエンドは起動時に --clientserver 引数によって
決定される。デフォルトでは、指定されていない場合は、使用可能なネイティブバック
エンド (X11 または MS-Window メッセージ) が使用される。ソケットサーバーを使用
する Vim インスタンスは、別のクライアントサーバーバックエンドを使用する Vim イ
ンスタンスと通信できない。
vim:tw=78:sw=4:ts=8:noet:ft=help:norl:
VIM リファレンスマニュアル by Bram Moolenaar
Vimクライアントサーバー通信 client-server
1. 共通機能 clientserver
2. X11特有の項目 x11-clientserver
3. Win32特有の項目 w32-clientserver
4. ソケットサーバー固有の項目 socketserver-clientserver
==============================================================================
1. 共通機能 clientserver
オプション+clientserverでコンパイルした時には、Vimはコマンドサーバーとして動
作することができる。それによりクライアントからメッセージを受け取りそれを実行す
ることができる。同時に、Vimはクライアントの機能も持ち合わせVimサーバーへメッ
セージを送ることもできる。
以下のコマンドライン引数が利用できる:
引数 意味
--remote [+{cmd}] {file} ... --remote
ファイルをリモートのVimで開く。Vimサーバーが無
い時には、ローカルで実行される。オプションで
+{cmd}に一つだけExコマンドを指定できる。コマン
ドは "|" でつなげて複数指定できる。コマンドラ
インの残りの部分はファイルのリストとして扱われ
る。だからファイルではない引数はこれよりも前に
書かなければならない。
この方法で標準入力を開くことはできない--。
次のようにしなければリモートのVimが問題を起こ
すかもしれない。
vim --remote-send "<C-\><C-N>:n filename<CR>"
--remote-silent [+{cmd}] {file} ... --remote-silent
上と同様、しかしサーバーが存在しなくてもエラー
を報告しない。指定したファイルがすでにローカル
で編集中であっても同様。
--remote-wait [+{cmd}] {file} ... --remote-wait
--remoteと 同様、しかしリモートVimでファイルが
完了(解放)されるまで待つ。
--remote-wait-silent [+{cmd}] {file} ... --remote-wait-silent
--remote-wait と同様、しかしサーバーが存在しな
くてもエラーを報告しない。
--remote-tab
--remote-tab --remote と同様、しかし各ファイルを新しいタブ
ページで開く。
--remote-tab-silent
--remote-tab-silent --remote-silent と同様、しかし各ファイルを新し
いタブページで開く。
--remote-tab-wait
--remote-tab-wait --remote-wait と同様、しかし各ファイルを新しい
タブページで開く。
--remote-tab-wait-silent
--remote-tab-wait-silent --remote-wait-silent と同様、しかし各ファイル
を新しいタブページで開く。
--servername
--servername {name} サーバー名{name}になる。--remote コマンドのど
れか1つと併用すると、デフォルトのサーバーでは
なく{name}で指定されるサーバーに接続する(下を
参照)。使用される名前は大文字になる。ソケット
サーバーを使用する場合は、パスを指定できる。詳
細については socketserver-name を参照。
--remote-send
--remote-send {keys} サーバーに{keys}を送信して終了する。{keys} に
マップは適用されない。特殊キー名が使用できる。
例: "<CR>" は CR 文字になる。
--remote-expr
--remote-expr {expr} サーバーに{expr}を実行評価させ、その結果を標準
出力に印刷する。
--serverlist
--serverlist サーバー名のリストを表示する。
--clientserver
--clientserver {method} 指定されたメソッド {method} をクライアントサー
バー機能のバックエンドとして使用する。
"socket"、"x11" または "mswin" のいずれかを指
定できる。
$VIM_CLIENTSERVER
環境変数 "$VIM_CLIENTSERVER" が設定されている
場合、Vim はその値を --clientserver 引数と同様
に解釈する。この変数が設定されており、かつコマ
ンドラインで --clientserver が指定されている場
合は、--clientserver が優先される。
{Vim が +X11 と +socketserver の両方の機能
付き、または MS-Windows では +socketserver
でコンパイルされたときのみ有効}
使用例
既に起動しているgvimサーバーで "file.txt" を編集する:
gvim --remote file.txt
既に起動しているFOOBARという名のサーバーで "file.txt" を編集する:
gvim --servername FOOBAR --remote file.txt
既に起動しているFILESという名のサーバーがあれば、FILESで "file.txt" を編集する
が、無ければ自分がFILESになる:
gvim --servername FILES --remote-silent file.txt
--remoteの後の全ての引数がファイル名として解釈されるので動作しない:
gvim --remote --servername FOOBAR file.txt
リモートサーバーで "+foo" という名のファイルを編集する("./" により先頭の "+"
の特別な意味が無効化されていることに注目):
vim --remote ./+foo
"BLA" という名のリモートサーバーで編集中の全てのファイルを保存して終了する:
vim --servername BLA --remote-send '<C-\><C-N>:wqa<CR>'
サーバー名 client-server-name
デフォルトではVimは自分が起動された時の名前(gvim, egvim ...)のサーバーになろう
とする。これは引数 --servername で変更できる。指定した名前が利用できない場合に
は、利用できる名前になるように後置名が付加される。例えば、1つのX-Serverで2つ目
のgvimを起動したときには "gvim1" というようになる。その時のサーバー名へは組み
込み変数v:servernameによりアクセスできる。サーバー名の大文字小文字は区別され
ないので、"gvim" と "GVIM" は同じとみなされる。Note ソケットサーバーが使用され
ている場合、いくつかの違いがあることに注意。socketserver-differences を参照。
Vimが引数 --remote や --remote-wait または --remote-send で起動された時には、
上記のようにその名前で起動されたサーバーを探そうと試みる。正確に一致するサー
バーがなかった時には、数字の後置名を付けて見つかった最初のサーバーを使用する。
引数 --servername に数字の後置を付けた名前を指定した場合には、それは正確に一致
するものだけを対象とする。
サーバーが見つからなく、--remote か --remote-wait が使われた時には、Vimは残り
のコマンドラインに従い起動し、そのファイルの編集セッションを自分自身で取り持
つ。この方法ならgvimはコマンドを送信する時に、既に別のgvimが起動しているかどう
かを知る必要は無い。
引数 --serverlist はVimに登録(実行)されている全てのコマンドサーバーを、標準出
力(stdout)に印刷して終了する。ソケットサーバーが使用されている場合は注意点があ
る。socketserver-differences を参照。
{server}
引数 {server} はいくつかの関数で使われる。これが空文字列の場合、Unix ではデフォ
ルトのサーバー名として "GVIM" が使用される。MS-Windows では空文字列は動作しな
い。
Win32 NOTE: Vimサーバーをアクティブアプリケーション(トップウィンドウ)にするこ
とは、MS-Windowsがそれを許していないので必ずしも成功するわけではない。クライア
ントは引数 --remote や --remote-wait を使用しサーバー名が "g" で始まる時には、
サーバーをアクティブアプリケーションにすることを試みる。
リモート編集
引数 --argument は残りのコマンドラインから:dropコマンドを構成することを引き
起こし、それを上記の方法で送信する。
引数 --remote-wait は同じ事をして、加えて全てのファイルの編集の完了を待つよう
に設定される。これはBufUnloadイベントを使用し、だからファイルがアンロードされ
るとすぐに、Vimはファイルの編集が完了したと判断する。
引数 --remote と --remote-wait は残りのコマンドライン全てを自分のものとして扱
うことに注意。言い換えれば残り全ての引数はファイル名とみなされる。そこにオプ
ションを置くことはできない!
Vim script 関数
E240 E573
Vim script にはコマンドサーバーを操作するために幾つか関数がある。詳細な解説は
builtin.txtを参照するか、関数名の上でCTRL-]を使って完全な解説を参照すること。
概要 説明
remote_startserver( name) サーバーを開始する
remote_expr( server, string, idvar) 式を送信する
remote_send( server, string, idvar) キーシーケンスを送信する
serverlist() 利用可能なサーバーのリストを得る
remote_peek( serverid, retvar) 結果文字列の有無確認する
remote_read( serverid) 結果文字列を取得する
server2client( serverid, string) 結果文字列を送信する
remote_foreground( server) サーバーを前面に移動する
CTRL-\_CTRL-Nの説明も参照。キーシーケンスの先頭に使用すると便利。
server2client()で使用するサーバーIDはexpand("<client>")で取得できる。
==============================================================================
2. X11特有の項目 x11-clientserver
E247 E248 E251 E258 E277
クライアントとサーバー間の通信はXサーバーにより行われる。Vimサーバーのディスプ
レイを指定する必要がある。Xサーバーの通常の保護機能が使われており、通信が成り
立つためにはそのXサーバーでウィンドウを作成できなければならない。異なるマシン
間での通信も可能である。
デフォルトでは、GUI Vim は X サーバーに名前を登録して送信された文字列を実行で
きるように備える。Vim はクライアントとしても振舞い、同じ X11 ディスプレイで動
作する別の Vim インスタンスに文字列を送ることができる。
X11のGUI Vim(gvim)が起動すると、ルートウィンドウの 'VimRegistry' プロパティに
送信サーバー名を登録しようと試みる。
X11ディスプレイにアクセスできる非GUIのVim(xterm-clipboardが有効になっている)
も、サーバー名が引数 --servername で明示的に与えられるか、Vim が
+autoservername 機能付きでビルドされている場合は、コマンドサーバーとして振舞
うことができる。
引数 --servername に空のサーバー名を与えればコマンドサーバー機能を無効にできる。
異なるアプリケーションからVimサーバーへコマンドを送るには、使われているプロト
コルの幾つかのヒントを含むソースコードsrc/if_xcmdsrv.cを参照のこと。
==============================================================================
3. Win32特有の項目 w32-clientserver
全てのWin32版Vimはコンソールもサーバーとして動作できる。OLEを組み込んでコンパ
イルする必要は無い。どのMS-Windowsでも動作する、Windowsメッセージが使用されて
いる。しかしネットワークを通じてやり取りすることはできない。
MS-Windowsメッセージを使っているから、どのようなアプリケーションでもVimサーバー
と通信することができる。加えてOLEの機能を使うこともできるole-interface。
gvimを使っている時には、--remote-wait は以下のようにしないと正しく動作しない:
start /w gvim --remote-wait file.txt
==============================================================================
4. ソケットサーバー固有の項目 socketserver-clientserver
E1564 E1565 E1566
NOTE: パッチ 9.2.511 以前のバージョンの Vim は、チャネルと JSON をベースにした
新しいソケットサーバーバックエンドと互換性のない、異なるソケットサーバーバック
エンドを使用している。
クライアントとサーバー間の通信は、内部的にチャネルを使用して行われる。従来型の
汎用クライアントサーバー命名規則(Unix でのみ使用可能)を使用する場合、ソケッ
トは使用可能な順に以下のディレクトリに配置される:
1. 環境に $XDG_RUNTIME_DIR が設定されている場合は "$XDG_RUTIME_DIR/vim"。
2. "$TMPDIR/vim-[uid]"。ここで "[uid]" はユーザーの uid である。このディレ
クトリのアクセス権限は 700 に設定され、ユーザーのみが読み書きできる。
$TMPDIR が設定されていない場合は、"/tmp" が使用される。
socketserver-name
サーバー id/名前を指定する際は、汎用名、絶対パス、または相対パスで指定できる。
サーバー id が "/" (絶対パス) または "./" または "../" (相対パス) で始まる場
合、ソケットへのパスとして扱われる。それ以外の場合、サーバー id は上記の共通
ディレクトリに配置されるソケットのファイル名になる。Note サーバー id/名前をパ
スとして指定する場合、スラッシュ "/" のみを含めることができる。"abc/dir" のよ
うな名前は無効である。この機能は Unix でのみ使用可能である。
socketserver-address
さらに、ソケットサーバーはチャネルアドレスとして作成することもできる。そのため
には、アドレスの前に "channel:" を付ける (この部分は無視される)。これは Unix
と MS-Windows の両方で使用可能で、Windows ではソケットサーバーバックエンドの命
名方法としてのみ使用できる。note ch_listen() には制限があり、TCP ソケットに
はポート番号しか使用できないことに注意。
名前の前にs "name:" を付けると、従来のサーバー名の動作が使用されるため、
"name:VIM" は "VIM" と同じになる。
Vim が +autoservername 機能付きでコンパイルされていない限り、X11 と同様にソ
ケットサーバーを明示的に起動する必要がある。これは、X11 GUI 版の Vim を使用し
ている場合を除く。
ソケットサーバー機能は、GTK GUI 版とターミナル版の両方の Vim で使用できる。Vim
が +autoservername 機能付きでコンパイルされていない場合、GUI 版であっても
X11 と同様にソケットサーバーを明示的に起動する必要がある。
Vim がクラッシュしたり、正常に終了しなかったりした場合、ソケットサーバーはソ
ケットファイルを削除せずそのまま残す。これは通常問題にはならない。ソケット名が
既に使用されている場合、Vim はそのソケットがデッド (どのプロセスにも接続されて
いない) かどうかを確認し、新しい名前を探す代わりに既存のソケットを置き換えるこ
とができるためである。
別のアプリケーションから Vim ソケットサーバーにコマンドを送信するには、ソース
ファイル src/os_unix.c を読むこと。そこには、使用されるプロトコルの詳細な説明
がある。これは Unix にのみ関係する情報である。
socketserver-differences
機能の大部分は、他のクライアント/サーバーバックエンドと同じである。
ただし、サーバー ID またはクライアント ID は、X11 や MS-Windows のように数値
(16進数で表示) ではなく、ソケットへの絶対パスになる。これは、v:servername 変
数で確認できる。名前がチャネルアドレスの場合は、"a/" プリフィックスが付いたア
ドレスになる。
Note --remote-wait を使用する場合、クライアント ID は "t/<何らかの数値>" の
ようになる。この命名規則はこのコマンド専用であり、これをアドレスとして使用しよ
うとすると失敗する。
Unix の場合、--serverlist 引数は X11 と同様に動作するが、上記の共通ディレク
トリのみをチェックする。ソケットにカスタムパスが使用されている場合、例えば、
--serverlist で指定された Vim プロセスの $XDG_RUNTIME_DIR あるいは <$TMPDIR
または /tmp>/vim に含まれないパスは検出されない。
MS-Windows の場合、--serverlist 引数は何も出力しない。
Unix または MS-Windows 上では +socketserver 機能が自動的に有効にな
り、+channel 機能が有効になる。
socketserver-x11
Vim が +socketserver と別のクライアントサーバーバックエンドの両方でコンパイ
ルされている場合、使用するバックエンドは起動時に --clientserver 引数によって
決定される。デフォルトでは、指定されていない場合は、使用可能なネイティブバック
エンド (X11 または MS-Window メッセージ) が使用される。ソケットサーバーを使用
する Vim インスタンスは、別のクライアントサーバーバックエンドを使用する Vim イ
ンスタンスと通信できない。
vim:tw=78:sw=4:ts=8:noet:ft=help:norl: