vimのnetrwでssh接続を行う

vimは高機能なのでデフォルトで、ssh接続を行う機能を持ってる。
(正確に言えば、内部でsftpだとかscp接続のコマンドを読んでるだけであるが。)
なので、サーバ上のファイルをローカルのvimで直接編集したりすることが可能である。
使えるプロトコルを列挙しておくと、

である。
接続の機能を担ってるのはnetrwなる標準のプラグインである。
netrwはこの機能のためにあるのではなく、vimでディレクトリを開いた時に表示される画面などディレクトリのブラジング機能を提供している。

ftpとscpを例に使い方を見る。サーバの状態は以下のようになってるとする。
server:host.co.jp
user:hoge
pass:passhoge
port:22

ftp

ftpでサーバに接続する場合は次のようにする。

vim ftp://hoge@host.co.jp:22/

上のコマンドで、サーバのホームディレクトリがvimで開かれる。
後は通常のvimでのブラウジングと同じように利用すれば良い。
ftpに対するパスワードを設定している場合は、一度だけパスワードが聞かれるが、以降は.netrcに記録されるためパス入力は求められない。
この設定されたパスを変更したい場合は

:call NetUserPass("hoge","passhoge")

としてやれば良い。

scp

scpでの接続のやり方はftpの場合と殆ど同じで次のようにする。

vim scp://hoge@host.co.jp:22/

上のコマンドで、サーバのホームディレクトリがvimで開かれる。
sshを使った接続の場合は、やっかいなのはパスワード入力である。
ftpのようなパスワード入力を省略する仕組みがないため、ディレクトリの移動やファイルを開く度にパスワードを入力する必要がある。
この問題を解消するには、パスワード式をやめて公開鍵方式での通信をやるしかない。
詳しくは、以下を参照。
Vim documentation: pi_netrw