Webアプリケーション用の開発サーバーとして使用するリモートLinuxシステムがあります。環境をローカルで再現できず、ファイルをリモートサーバー上で実行する必要がありますが、ローカルで(vimで)編集したいと思います。
このリモートサーバー上のファイルはGitを介して管理されます。私は通常、一度に何百ものファイルのうち1〜5個だけを編集します。
提案された回避策と正しく機能しない理由:
sshfs:この解決策は素晴らしいようですが、いくつかのバグがあります。
- ローカルエディタは保存中に数秒間停止します。ネットワーク遅延が発生した場合、非同期的に保存されません。
- sshfsが有効になっている間にネットワークがダウンした場合は、マウント解除のためにハッキング操作を実行するまで、実際にはファイルシステムの対応する部分をブロックします。http://sourceforge.net/p/fuse/mailman/message/26936619/
- 編集中のファイルのローカルコピーを作成するのではなく、データを継続的に同期するため、全体的に非常に遅くなります。
重力による加速度:
- 作業速度が遅い。ファイルを開くには時間がかかり、ディレクトリツリーはキャッシュされません。また、vimがファイル権限を踏みにじるバグ(5年以上)があります。これは、リモートSSHを介して権限を継続的に更新する必要があることを意味します。
同期:
- これはgitリポジトリなので、頻繁にブランチを変更する必要があるかもしれません。時には、リモートサーバーが私を更新する必要があるかもしれませんが、その逆も同様です。全体的に、これは複雑さを増やし、リモートサーバーの変更を確認しようとするたびに手動同期が必要です。
端末を介してリモートシステムでvimを使用する:
- キーストロークが遅れて狂います。
FTPプロトコル
- 生成された一時ファイルにはランダムな名前があるため、どのタブが何であるかはわかりません。
- リモートサーバーを更新するには、vimを閉じる必要があります(愚かさ)
明らかに良い方法がありますか?Windowsでは、デフォルトでローカルで編集するファイルの一時コピーを作成して保存すると、バックグラウンドでファイルを同期するwinSCPを使用しました(保存後すぐにエディタで続行できます)。
emacsに関するこの質問を見つけましたが、emacsを使用したくありません。 リモートサーバーにSSHで接続し、ローカルEmacsを使用してファイルを編集する方法は?
ベストアンサー1
リストから欠落しているオプションの1つはVimのものです。ネットワークVimに付属のプラグイン(コメントで@godlygeekが最初に言及しました)。:edit scp://hostname/path/to/file
起動時に次のURLを指定することもできます$ vim ftp://hostname/path/to/file
。複数のプロトコルをサポートし、:write
元のファイル名を維持しながらダウンロード/アップロードを透過的に(各プロトコルで)処理するため、ファイル形式の検出などは引き続き機能します。