Atomでリモートファイルを更新するパッケージ

More than 3 years have passed since last update.


はじめに

vimでいうnetrw、emacsでいうtrampのようなものがAtomにもないかと思い調べてみた。

結論から言うとremote-editが一番求めているものに近かったのでこれを導入することにしたが、折角他のパッケージについても調査をしたのでまとめてみることにした。


netrwtrampを知らない方へ

vimのnetrw、emacsのtrampを知らない方のために、先にどのようなものであるかを簡単に説明する。

vimの場合、通常のファイルを開く場合は以下のようなコマンドを入力して行う。

:e /path/to/target.txt

ここでふとあるサーバに置いてあるtarget.txtを別バッファ(Atomで言うペイン)に表示したくなった場合、下記のようなコマンドを入力する。

:vnew scp://user@server//path/to/target.txt

scp://としているところはftp://でもsftp://でもrsync://でも良いのだが、このようにするとnetrwプラグインがよしなにやってくれて、別バッファ(Atomでいうペインのようなもの)に指定したファイルを読み込んでくれる。

実ファイルはテンポラリディレクトリ内に一時ファイルとして保存されているが、利用者はそういった裏のことを意識することなくリモートファイルをまるでローカルファイルであるかのように扱うことが可能となる。

vimでの操作が慣れているためvimを例として説明したが、emacsのtrampも似たようなプラグインである。


調査・検討を行ったAtomパッケージ


remote-atom

remote-atom

rmateをAtomで利用できるようにするためのパッケージ。

rmateをすでに利用していて、別のエディタからAtomに乗り換えたいというケースには最適だと思われる。

個人的にはAtom内で完結しない、rmateコマンドを別途インストールする必要がある等初期導入コストが他と比べて高めに感じたため導入は見送った。


remote-edit

remote-edit

vimmerならneossh(unite-ssh)に近い動きと言えば理解してくれるだろうか?

コマンドパレットから接続サーバ及び編集対象ファイルを選択して編集を行う。

編集対象ファイルはテンポラリファイルとして保存され、利用者は実ファイルがどこに保存されているかを意識する必要がない。

vimでUnite ssh://したときのように絞り込んで対象ファイルを選択する挙動が快適であるため、他のパッケージを利用している方も一度試してみることをお勧めしたい。

これが求めている機能に一番近かったのだが、事前に接続サーバのセットアップが必要であるのがvimのnetrwに慣れている身としては若干わずらわしい。


2015/11/17 注意事項

現時点での最新版であるAtom 1.2.0ではバグがあり動作しないため注意が必要。

詳しくは別エントリに書いたのでこちらを参照してほしい。


2015/12/07 追記

2015/11/17に追記した件は2015/12/05に取り込まれたPRによって解決した。

Atom 1.2.3以降であれば動作する。


remote-ftp

remote-ftp

パッケージの説明にもある通り、FTP/SFTPクライアントと言うのが適切。

プロジェクトフォルダごとに.ftpconfigというファイルにFTP/SFTP接続情報を書いて保存し、通常のツリービューとリモートのツリービューを行き来してファイルのアップロード/ダウンロードを行う。

.ftpconfigはプロジェクトフォルダのサブフォルダ内に作成することも可能だが、同期対象はプロジェクトフォルダ全体となるため注意が必要。

上記2パッケージと違い、ローカルとリモートの同期を取ることが主目的であり、求めているものとは異なったため導入は見送った。


remote-sync

remote-sync

ローカルとリモートの同期を取ってくれるパッケージ。

ローカルで保存するとバックグラウンドでリモートにアップロードを行う。

個人的には前述したremote-ftpのツリービューなし版という認識だが、こちらはローカルとリモートでdiffを取ることも出来るようだ。

こちらもremote-ftpと同じように.remote-sync.jsonというファイルをプロジェクトフォルダに保存する。

.remote-sync.jsonはプロジェクトフォルダのサブフォルダ内に作成することも可能だが、同期対象はプロジェクトフォルダ全体となるため注意が必要。