Vimを使用してネットワーク上のファイルを編集するにはどうすればよいですか?


13

現在、サーバーにSSHで接続し、サーバーでVimを実行しています。これには、SCPを介してリモートサーバーからファイルを開くという面倒な構文を処理する必要がないという利点があり、さらに重要なことには、サーバーのファイルシステムを実際にすばやくナビゲートできるという利点があります。一方、遅延があり、編集が難しくなります。

大量のリモートファイルを編集する標準的な方法は何ですか?


6
まさにあなたがそれをやっている方法。
イグナシオバスケス-エイブラムス

vim遅延が見られる場合、これはおそらくワークフローではなくネットワークの問題を示しています。
ジョセフR.

ssh root@myvps.com; vim / etc / somefile-ログインしてからVimを
起動する-jcora

実際にはネットワークにあります。キーを押すと、ヨーロッパから米国にパケットを送信する必要があります。ここでは、使用しているVimインスタンスが実際に実行されています。
jcora

また、実行することもできますssh root@myvps.com vim /etc/somefile(がないことに注意してください;)。
テルドン

回答:


26

SSHFSを使用して、ローカルフォルダーにリモートホームをマウントできます。現在のインフラストラクチャとローカルvimの低遅延を使用する利点があります。


1
最高の方法。低レイテンシだけでなく、1つのvimrcを維持するだけでよい
exussum

20

ローカルvimまたはgvimを使用してリモートで編集できます。

:e scp://me@someplace.else/~/myfiles/whatever.file

scp安全なコピープロトコルです。認証方法はと同じですssh。したがって、sshキーを利用できるようにする必要があります。他にもさまざまなプロトコルがサポートされています(参考文献を参照:help netrw-externapp)。

この方法でディレクトリを参照でき/ます。パスがで終わることを確認してください。それ以外の場合、vimはそれを新しいファイルに変換します。

:wscpを介してファイルを自動的に書き込みます。何らかの理由で書き込みが失敗した場合は、ステータスバーに「シェルが1を返した」ようなものになるため、注意してください。ただし、注意してください:気付かない場合、vimは知らないため、結果が生じる可能性があります。たとえば、現在終了した場合、警告は表示されません。:waたくさん使うとこれを見逃すのは特に簡単です; | それが私が持っている唯一の警告です。

公式ドキュメントについては、を参照してください:help netrw


+1これを書いたところです。netrwのプラグイン(通常はデフォルトでインストールされる)リモートファイルを読み込むためのさまざまな方法があります。
グレッグヒューギル

:私は、私が言ったときに、このオプションを参照して「これはSCPを介してリモートサーバーからファイルを開くの面倒な構文に対処する必要がないという利点があり、そして、より重要なのは、本当にすぐにサーバのファイルシステムをナビゲートすることができるという、」 この道を私には非常に限られているようです。
jcora

1
公平を期すために、あなたの質問はもともと、後で編集された「SCPを介したリモートサーバー」について言及していませんでした。
グレッグヒューギル

@GregHewgill:少し困惑しているので、そのメモをありがとう-これは一般的な目的のための最も簡単で簡単な方法です(SSHFSに不快感はありません!)。URLをファイルパスに追加するのが比較的面倒な場合、実行中のタスクが実際に誰かがエディターと一緒にそれを実行することをどのように要求するかについて興味があります... esp。上矢印だけでコマンドを実行できるためです。しかし、それぞれに。
goldilocks

@GregHewgillはい、移動中に携帯電話で質問を書いたので、意図せずにいくつかのものを残しました。goldilocks、私は常にファイルを開いたり閉じたりします。ファイルシステムもナビゲートし、そこから開きます。URL +パスを追加することは、「そこにいる」よりも面倒です。
jcora

2

rsyncを使用します。変更されたもののみを転送します。そのようです:

rsync -e ssh -va remoteuser@remotehost:remotedir .

その後、自由にファイルをローカルで編集します。ゼロラグ。コミットする前にすべてのファイルを検査できます。

rsync -e ssh -va . remoteuser@remotehost:remotedir

最初にローカルディレクトリを作成してそこに入れると仮定していますcd。また、ファイルの削除を処理させることもできますが、間違ったディレクトリで実行するとディレクトリツリー全体が破壊される可能性があるため、それには十分注意してください。

rsync -e ssh -va --delete . remoteuser@remotehost:remotedir

私がすることは、最初に「n」フラグを使用して「ドライモード」で実行することです。

rsync -e ssh -van --delete . remoteuser@remotehost:remotedir

それが本当なら、それは何をしたかを報告します。報告されたリストに満足している場合、リストを再度実行し、「n」フラグを削除します。

rsyncは非常に効率的です。他にもさまざまなフラグがあります。とても洗練されています。


0

最も適切な方法-SSH方法の名前が付けられているかもしれませんが、それでも編集されたファイルの性質に応じて、小さなパーティションを割り当てて共有し、そこにファイルを置くことができます(もちろん、セキュリティポリシーでこのアクションが許可されている場合)。この提案では、NFSまたはSambaを最も簡単に使用できますが、テストファイルの編集はUNIXの一般的な概念であり、現在の方法を維持する必要がある場合があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.