Vim is a highly configurable text editor

LinuxやFreeBSDといったサーバを管理する場合、ssh(1)でログインしてvim(1)でファイルを編集するという作業を行う。こうした作業を実施する場合に覚えておくと便利なコマンドがある。vim(1)コマンドは引数にscp://からはじまる指定を受けることができる。この指定を実施すると、ssh(1)でログインしなくとも直接ファイルを編集しているように振舞わせることができる。

ssh(1)でログインしてvim(1)コマンドを実行するという2度手間が、1回のコマンド実行で完了するという利点があるほか、作業するマシンを1つに集約できるという特徴がある。ログインして作業する場合、それぞれのホストに設定ファイルが必要になり、コマンド履歴などのデータもホストごとに分散することになる。作業するホストをひとつに絞ることで、こうした煩わしさを改善できる。

vimで直接リモートのファイルを編集する - 相対パス指定

vim scp://ユーザ名@ホスト名/ホームディレクトリからの相対パス

サンプルではわかりにくいが、絶対パスの場合は//のような記述になる。vim scp://daichi@target//home/daichi/test.txtといった形だ。

vimで直接リモートのファイルを編集する - 絶対パス指定

vim scp://ユーザ名@ホスト名//絶対パス

作業するホストをひとつに制限するというのは、作業のヒューマンエラーを回避するという面でも効果がある。複数のホストにログインして作業する場合、今作業しているホストをローカルホストと勘違いしたり、またその逆だと勘違いし、消してはいけないファイルを消してしまうというミスを犯すことがある。作業するホストをローカルホストに絞り、ssh(1)でログインせずに作業するようにすると、こうしたミスを避けやすくなる。

任意のコマンドを実行したい場合、ssh(1)にホストを指定したあとに実行したいコマンドを記述すればいい。コマンドはリモートで実行されそのまま処理が終了となり、ログインしてのインタラクティブ作業は実施されなくなる。ただしこの方法ではvim(1)を実行することはできないため、ファイルを編集するには上のサンプルのようにvim(1)コマンドでscp://を指定してファイルを開く必要がある。