Как использовать GVIM для редактирования удаленного файла? - PullRequest
25 голосов
/ 26 января 2010

Я использую GVIM в Ubuntu 9.10. Я ищу правильный способ настроить GVIM, чтобы иметь возможность редактировать удаленные файлы (HTML, PHP, CSS) для примера ftp.

  • Когда я использую: e scp: //username@remotehost/./path/to/file, я получаю: error detected while processing BufEnter Auto commands for "*":E472: Command failed.
  • Когда я открываю файл на пульте дистанционного управления через Dolphin или Nautilus, я не могу использовать другие файлы с NERDTree.
  • Наконец, когда я редактирую на удаленном компьютере файл через Dolphin, меняются права на доступ к interdit.

Так как же использовать GVIM для редактирования удаленных файлов, как на моем локальном хосте?

Ответы [ 10 ]

44 голосов
/ 14 сентября 2010

Я считаю, что запуск файловой системы через ssh (с помощью sshfs ) - лучший вариант, чем когда редактор обрабатывает эти вещи, или запуск самого редактора через туннель 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

Другой популярный вариант, конечно, будет запускать vim (а не gvim) внутри сеанса GNU на одном компьютере и подключаться к нему через ssh из любой точки мира. случается. Программируйте весь день на работе, а вечером вы подключаетесь к своему офисному компьютеру, подключаетесь к сеансу экрана GNU и выбираете, где именно вы остановились. Я использовал найти более богатую цветовую палитру как единственную вещь, которую я действительно упустил из gvim при использовании vim, но это на самом деле можно исправить благодаря форку urxvt , который позволит вам настроить всю 256-позиционную цветовую палитру а не только 16 первых позиций палитры, которые большинство эмуляторов терминала позволит вам настроить.

8 голосов
/ 26 января 2010

Существует один способ - использовать копию удаленного хоста, используя SSH для пересылки вам клиента X11, например:

user@local:~/$ ssh -X user@host
...
user@host:~/$ gvim file

Последняя команда должна открыть gvim на вашем рабочем столе. Конечно, это зависит от того, на каком удаленном хосте изначально установлен X11 / gnome / gvim, что может оказаться не тем решением, которое вы ищете / опция в вашем случае.

Примечание. Пересылка X11 может представлять угрозу безопасности.

6 голосов
/ 26 января 2010

Для того, чтобы netrw работал без проблем, я считаю, что вам нужно , а не в режиме совместимости.

Попробуйте

: установить несовместимый

тогда

: редактировать scp: // хост / путь / к / файлу

5 голосов
/ 31 июля 2013

Попробуйте это

:e scp://username@remotehost//path/to/file

Обратите внимание, что использование // намеренно после remotehost дает абсолютный путь к вашему файлу :)

http://www.celsius1414.com/2009/08/19/how-to-edit-remote-files-with-local-vim/

2 голосов
/ 12 июля 2011

В вики подсказках vim есть статья на эту тему, Редактирование удаленных файлов через scp в vim .

1 голос
/ 26 января 2010

РЕДАКТИРОВАТЬ: аутентификация ключа не требуется для открытия файлов через 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

НТН.

0 голосов
/ 30 ноября 2011

для этого в Windows загрузите / установите библиотеку Dokan и Dohan SSHFS, которые являются первой и последней ссылками на этой странице .

0 голосов
/ 11 июля 2011

О вашей команде: e scp: //username@remotehost/./path/to/file: обратите внимание, что для netrw scp берется относительно вашего домашнего каталога на этом удаленном хосте. Чтобы избежать домашнего пути, отбросьте это "."; то есть. : e scp: // имя пользователя @ удаленный хост // путь / к / файлу.

0 голосов
/ 26 января 2010

Согласно документации, BufEnter обрабатывается после того, как файл прочитан и буфер создан, поэтому я предполагаю, что netrw успешно прочитал файл, но у вас есть плагин, который предполагает, что файл находится в локальной файловой системе и пытается получить доступ это, например запустить ctags.

Попробуйте отключить все свои плагины, кроме скриптов Vim по умолчанию, а затем отредактируйте файл.

Кроме того, попробуйте отредактировать каталог, чтобы увидеть, может ли netrw это прочитать - вам нужно поставить / в конец, чтобы netrw знал, что это каталог.

0 голосов
/ 26 января 2010

Я не думал, что вы сможете напрямую редактировать удаленный файл, используя GVIM, работающий локально. Однако, как отмечали другие, это определенно возможно. Это выглядит очень интересно; Я проверю это. Я оставлю остальную часть своего поста здесь, на случай, если он пригодится кому-либо еще, в качестве альтернативного метода. Этот метод будет работать, даже если у вас нет SSH-доступа к файлу (т. Е. У вас есть только FTP, или S3, или что-то еще).

Однако вы можете получить этот эффект, привязав GVIM к графическому приложению для передачи файлов. Например, в OS X я использую CyberDuck для передачи файлов (FTP, SFTP и т. Д.). Затем он настроен на использование GVIM в качестве редактора, поэтому я могу просто дважды щелкнуть файл в удаленном списке, и CyberDuck загрузит копию этого удаленного файла и откроет его в GVIM. Когда я сохраняю его в GVIM, CyberDuck загружает файл обратно на удаленный хост.

Я уверен, что эта функция не уникальна для CyberDuck и, вероятно, присутствует в большинстве более хороших утилит для передачи файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...