Ubuntu9.10でGVIMを使用しています。私は、たとえばftpでリモートファイル(HTML、PHP、CSS)を編集できるようにGVIMを構成する正しい方法を探しています。
error detected while processing BufEnter Auto commands for "*":E472: Command failed.
では、GVIMを使用してローカルホストのようにリモートファイルを編集するにはどうすればよいですか?
(sshfsを使用して)ssh上でファイルシステムを実行する方が、エディターにその処理を実行させたり、エディター自体を実行したりするよりも優れたオプションであることがわかりました。 sshトンネル。
だからあなたはする必要があります
apt-get install sshfs
その後
sshfs remoteuser@remotehost:/remote/path /local/mountpoint
これにより、リモートファイルをローカルファイルシステムにあるかのように編集できます。
さらにスムーズにするために、/ etc/fstabに行を追加できます。
sshfs#remoteusername@remotehost:/remote/path /local/mountpoint Fuse user,noauto
何らかの理由で、これを試すときは、fusermount -u /local/mountpoint
だけでなくumount /local/mountpoint
を使用する必要があることがわかりました。多分それは私のディストリビューションです。
最近、マウントユーザーはFuse
グループに属している必要があることにも気づきました。そう:
Sudo addgroup <username> Fuse
もちろん、他の一般的なオプションは、1台のマシンで GNU Screen セッション内でvim(gvimではなく)を実行することです。どこにいてもssh経由でそのセッションに接続します。仕事で一日中コードを書き、夕方にはオフィスのコンピューターにSSHで接続し、gnu screenセッションに再度接続して、中断したところから正確に再開します。私は、vimを使用するときにgvimから本当に見逃したのは、より豊富なカラーパレットだけだと思っていましたが、実際には修正できます rxvtのフォークのおかげで 256ポジションの色全体をカスタマイズできますほとんどのターミナルエミュレータでカスタマイズできるパレットの最初の16の位置だけでなく、パレット。
1つの方法があります。それは、リモートホストのコピーを使用し、SSHを使用してX11クライアントを転送することです。
user@local:~/$ ssh -X user@Host
...
user@Host:~/$ gvim file
後者のコマンドはデスクトップでgvimを開くはずです。もちろん、これはX11/gnome/gvimが最初にインストールされているリモートホストに依存します。これは、探しているソリューション/ケースのオプションではない可能性があります。
注:X11転送はセキュリティリスクになる可能性があります。
Netrwがシームレスに機能するためには、not互換モードである必要があると思います。
試してみてください
:set nocompatible
その後
:edit scp:// Host/path/to/file
これを試して
:e scp://username@remotehost//path/to/file
//の使用は、remotehostの後で意図的に使用され、ファイルの絶対パスを提供することに注意してください:)
http://www.celsius1414.com/2009/08/19/how-to-edit-remote-files-with-local-vim/
Vimのヒントウィキにはこれに関する記事があります vimのscpを介したリモートファイルの編集 。
編集:キー認証は不要 ssh経由でファイルを開く場合です。 Vimはパスワードの入力を求めます。
Netrw.vimが起動時にvimによってロードされたかどうかに注意しておくと便利です。
:echo exists("g:loaded_netrwPlugin")
Ssh経由でファイルを開くには、サーバーの承認済みキーにローカルマシンの公開キーが必要です。 vimドキュメントの次のヘルプセクションはそれをかなりよく説明しています。
:help netrw-ssh-hack
公開鍵をエクスポートする簡単な方法は、ssh-copy-id(使用可能な場合)を使用することです。
ssh-copy-id user@Host
また、他のプロトコルでのネットワークファイル編集に関するnetrwのドキュメントをご覧ください。
:help netrw
HTH。
ドキュメントによると、BufEnterはファイルが読み取られ、バッファが作成された後に処理されるため、netrwはファイルを正常に読み取ったと思いますが、ファイルがローカルファイルシステム上にあり、アクセスしようとしていると想定するプラグインがあります。 ctagsを実行します。
デフォルトのVimスクリプトを除くすべてのプラグインスクリプトを無効にしてから、ファイルを編集してみてください。
また、ディレクトリを編集して、netrwがそれを読み取れるかどうかを確認してください。netrwがディレクトリであることを認識できるように、末尾に/を付ける必要があります。
コマンドについて:e scp:// username @ remotehost /./ path/to/file:netrwでは、scpはそのリモートホスト上のホームディレクトリを基準にして取得されることに注意してください。ホーム相対パスを回避するには、その「。」を削除します。すなわち。 :e scp:// username @ remotehost // path/to/file。