複数デバイスで同じVim環境を使う(VPS + SSH構成)
自宅のデスクトップ、職場のノートPC、外出先のタブレット。端末を切り替えるたびに設定やプラグインの入れ直しが発生するのは煩わしいものです。VPS上に1つだけVim/Neovim環境を用意し、どの端末からもSSHで同じ環境に接続する構成にすれば、この悩みが解消します。
目次(9項目)
基本構成
考え方はシンプルで、次の2つがあれば成立します。
- VPS上にVim/Neovimと設定ファイル・プラグインを1セットだけ用意します
- 各端末からインターネット経由でSSH接続します
編集作業そのものはVPS側で完結するため、端末側にVimやプラグインを個別にインストールする必要はありません。ローカルの端末はターミナル(SSHクライアント)を映すだけの窓口になります。
VPSの選び方
VPSは「レンタルサーバー」と違い、OSの管理者権限を持てるのが特徴です。
- クラウドサービス(AWS EC2など)より低コストな選択肢も多くあります
- 国内ならConoHa VPSやさくらのVPSのような、管理画面が使いやすく実績のあるサービスが定番です
- 常時起動しておく必要はなく、使うときだけ起動する運用にすればコストも抑えられます
SSHクライアントの選び方
接続元の端末に応じて、使いやすいSSHクライアントを選べます。
| 環境 | 選択肢の例 |
|---|---|
| Windows | Windows Terminal+OpenSSH、またはRloginのような専用クライアント |
| Mac/Linux | 標準ターミナルのssh、またはTermiusのようなGUIクライアント |
| タブレット/スマートフォン | Termiusなど、モバイル対応のSSHクライアント |
複数端末で同じクライアント(例えばTermius)を使うと、接続設定を端末間で共有できるので、乗り換えの手間がさらに減ります。ファイルの受け渡しにはSFTP機能を備えたクライアントを選んでおくと、編集以外の作業も同じツールで完結します。
VPS上のVim環境をどう構築するか
普段どおりインストールして設定ファイルを配置するだけで十分ですが、検証用に気軽に壊せる環境が欲しい場合はDockerコンテナで検証環境を作る方法も組み合わせられます。本番の設定を汚さずに新しいプラグインを試したいときに便利です。
この構成が向く人・向かない人
| 向く人 | 向かない人 |
|---|---|
| 複数端末を行き来する機会が多い人 | オフラインでの作業が多い人 |
| GUIウインドウである必要を感じない人 | 常時ネット接続を前提にしたくない人 |
常にネット接続がある前提の構成である点だけは、始める前に理解しておく必要があります。
自宅・職場・出先のタブレットの3環境で作業することが多く、VPS上に1つだけ環境を作ってからは、どの端末からでも寸分違わない設定でVimを使えるようになりました。新しい端末を追加するときも、SSHクライアントを入れるだけで済むので環境構築のストレスがなくなりました。
接続が切れても作業を残す
この構成でいちばん最初に困るのが、回線が切れた瞬間にVimごと消えることです。移動中や無線の環境では避けられないので、Vimをそのまま起動するのではなく、端末多重化ツールの中で動かします。
ssh vps -t 'tmux new -A -s main'
new -A -s main は「main というセッションがあれば入り、無ければ作る」という指定です。切れても中のVimは動き続けるので、つなぎ直せば同じカーソル位置から再開できます。接続の切れやすさそのものが気になるなら、UDPで通信して切断に強い mosh を使う手もあります。
クリップボードが手元に届かない
リモートのVimで "+y を実行しても、コピー先はサーバー側のクリップボードです。手元のマシンには届かないので、ブラウザに貼り付けようとしても何も入っていません。
回避策は2つあります。1つは端末のマウス選択でコピーする方法で、確実ですが行番号や折り返しを巻き込みます。もう1つはOSC 52という端末の機能を使う方法で、対応している端末なら "+y がそのまま手元のクリップボードに届きます。Neovim 0.10以降はこの仕組みが本体に入っているので、設定なしで動く環境が増えています。
入力の遅れを減らす
回線の遅い環境では Esc を押してから反応するまでの間が気になります。VimがEsc単体なのか矢印キーなどの一部なのかを判断するために待つ時間があり、これが遅延と重なって長く感じます。
set ttimeout
set ttimeoutlen=10
この2行で待ち時間を10ミリ秒まで縮められます。矢印キーが効かなくなるほど短くすると困るので、10から50の間で自分の環境に合う値を探してください。timeoutlen(マッピングの待ち時間)とは別の設定なので、混同しないよう注意が要ります。
まとめ
VPS上にVim環境を1つ用意し、各端末からSSHで接続する構成にすれば、端末をまたいだ設定の同期に悩む必要がなくなります。常時ネット接続が必要な点さえ許容できれば、複数デバイスを使う人ほど恩恵が大きくなります。同じ環境を持ち歩くという目的だけなら、Dockerのサンドボックスのほうが構築も破棄も手軽です。ブラウザだけで完結させたい場合はクラウドIDEという選択肢もあります。手元の端末に何も入れられない状況では、こちらのほうが現実的なことがあります。