Как использовать GVIM для редактирования удаленного файла?
Я использую GVIM на Ubuntu 9.10. Я ищу правильный способ настройки GVIM для редактирования удаленных файлов (HTML, PHP, CSS) на примере ftp.
- Когда я использую: e scp://[email protected]/./path/to/file, я получаю:
error detected while processing BufEnter Auto commands for "*":E472: Command failed.
- Когда я открываю файл на удаленном компьютере через Dolphin или Nautilus, я не могу использовать другие файлы с NERDTree.
- Наконец, когда я редактирую удаленный файл через Dolphin, права меняются для доступа к interdit.
Итак, как использовать GVIM для редактирования удаленных файлов, например, на моем локальном хосте?
Ответы
Ответ 1
Я нашел работу над файловой системой поверх ssh (с помощью sshfs) лучше, чем иметь дескриптор редактора, который обрабатывает или запускает сам редактор поверх туннеля ssh.
Итак, вам нужно
apt-get install sshfs
а затем
sshfs [email protected]:/remote/path /local/mountpoint
И это позволит вам редактировать удаленные файлы, как если бы они были в локальной файловой системе.
Чтобы сделать его еще более плавным, вы можете добавить строку в /etc/fstab
sshfs#[email protected]:/remote/path /local/mountpoint fuse user,noauto
По какой-то причине я обнаружил, что для экспериментов с этим нужно использовать fusermount -u /local/mountpoint
, а не просто umount /local/mountpoint
. Может быть, это просто мой дистрибутив.
Недавно я также отметил, что монтажный пользователь должен находиться в группе fuse
. Итак:
sudo addgroup <username> fuse
Другим популярным вариантом, конечно, было бы запустить vim (а не gvim) внутри Экран GNU сеанс на одном компьютере и подключиться к этому сеансу через ssh, где бы вы ни были. Код в течение всего дня на работе, а вечером вы ssh в свой офисный компьютер, присоединитесь к сеансу экрана gnu и заберите то, где вы остановились. Я использовал более богатую цветовую палитру, чтобы быть единственной, которую я действительно пропустил от gvim при использовании vim, но это может быть исправлено благодаря вилке urxvt, которая позволит вы настраиваете всю палитру цветов на 256 позиций, а не только 16 первых позиций палитры, которые большинство эмуляторов терминала позволят вам настроить.
Ответ 2
Существует один способ использования копии удаленного хоста, используя SSH для пересылки клиенту X11, например:
[email protected]:~/$ ssh -X [email protected]
...
[email protected]:~/$ gvim file
Последняя команда должна открывать gvim на вашем рабочем столе. Конечно, это зависит от удаленного хоста, у которого есть X11/gnome/gvim, в первую очередь, это может быть не решение, которое вы ищете/вариант в вашем случае.
Примечание. Пересылка X11 может представлять угрозу безопасности.
Ответ 3
Чтобы netrw работал без проблем, я считаю, что вам не нужно находиться в режиме совместимости.
Try
: установить nocompatible
затем
: редактировать scp://host/path/to/file
Ответ 4
Попробуйте это
:e scp://[email protected]//path/to/file
Обратите внимание, что использование//является преднамеренным после того, как remotehost дает абсолютный путь вашего файла
:)
http://www.celsius1414.com/2009/08/19/how-to-edit-remote-files-with-local-vim/
Ответ 5
В wiki wiki есть статья об этом, Редактирование удаленных файлов через scp в vim.
Ответ 6
EDIT: аутентификация ключа не требуется для открытия файлов по ssh. Vim запросит пароль.
Было бы полезно отметить, был ли netrw.vim загружен vim при его запуске.
:echo exists("g:loaded_netrwPlugin")
Для открытия файлов по ssh вам нужен открытый ключ локального компьютера в авторизованных ключах сервера. Следующий раздел справки в документации vim объясняет это довольно хорошо.
:help netrw-ssh-hack
Быстрый способ экспорта открытого ключа был бы с помощью ssh-copy-id (если он доступен).
ssh-copy-id [email protected]
И посмотрите документацию netrw для редактирования сетевого файла по другим протоколам.
:help netrw
НТН.
Ответ 7
В соответствии с документами BufEnter обрабатывается после чтения файла и создания буфера, поэтому я предполагаю, что netrw успешно прочитал файл, но у вас есть плагин, предполагающий, что файл находится в локальной файловой системе и пытается получить доступ это, например для запуска ctags.
Попробуйте отключить все ваши скрипты плагинов, кроме Vim по умолчанию, а затем отредактируйте файл.
Кроме того, попробуйте отредактировать каталог, чтобы узнать, может ли netrw прочитать это - вам нужно поместить/на конец, чтобы netrw знал, что это каталог.
Ответ 8
О вашей команде: e scp://[email protected]/./path/to/file: обратите внимание, что с помощью netrw scp берется относительно вашего домашнего каталога на этом удаленном хосте. Чтобы избежать родственного пути, отбросьте это "."; то есть.: e scp://имя_пользователя @remotehost//путь/в/файл.
Ответ 9
чтобы выполнить это на окнах, загрузите/установите библиотеку Dokan и Dokan SSHFS, которые являются первыми и последними ссылками на этой странице.
Ответ 10
Я не думал, что вы сможете напрямую редактировать удаленный файл, используя GVIM, работающий локально. Однако, как отмечали другие, это возможно. Это выглядит очень интересно; Я проверю это. Я оставлю остальную часть своего сообщения здесь, в случае, если это полезно кому-либо еще, в качестве альтернативного метода. Этот метод будет работать, даже если у вас нет доступа к файлу SSH (т.е. У вас есть только FTP или S3 или что-то еще).
Вы можете получить этот эффект, связав GVIM с графическим приложением передачи файлов. Например, в OS X я использую CyberDuck для передачи файлов (FTP, SFTP и т.д.). Затем я настроил на использование GVIM в качестве моего редактора, поэтому я могу просто дважды щелкнуть файл в удаленном списке, и CyberDuck загрузит копию этого удаленного файла и откроет его в GVIM. Когда я сохраняю его в GVIM, CyberDuck загружает файл обратно на удаленный хост.
Я уверен, что эта функциональность не уникальна для CyberDuck и, вероятно, присутствует в наиболее удобных утилитах передачи файлов.