Использование Macvim поверх ssh - PullRequest
26 голосов
/ 16 марта 2011

Мой проект включает в себя работу с большой кодовой базой на удаленном сервере. Я постоянно редактирую несколько файлов, поэтому scp'ing файлы обратно не возможны. Я установил свой локальный Macvim так, как мне нравится, с несколькими плагинами, включая ctags.

Можно ли использовать Macvim поверх ssh таким образом, чтобы я мог легко просматривать и открывать файлы из Macvim, работающего локально?

заставить работать ctags без его установки на удаленном сервере было бы еще лучше, но я подозреваю, что это невозможно ...

Также проблема заключается в том, что удаленный сервер настроен с чьим-либо другим .vimrc, который я не хочу использовать, но не могу перезаписать.

Ответы [ 7 ]

29 голосов
/ 16 марта 2011

Следующая команда откроет файл в MacVim через ssh:

:e scp://username@host.com/path/to/file

Я подозреваю, что это может быть не совсем то, что вы ищете, поскольку это даст вам только один файл за раз.

Если бы вы могли подключить общий ресурс из целевой системы локально, это бы также сработало.

19 голосов
/ 16 марта 2011

Использовать SSHFS (http://fuse.sourceforge.net/sshfs.html), его версия поставляется с MacFUSE.

5 голосов
/ 10 марта 2014

MacFUSE, как предложено выше, больше не поддерживается.К счастью, есть преемник, OSXFUSE .

Я использую MacVim на OS X 10.9 с OSXFUSE и SSHFS для редактирования кода на удаленном сервере Linux.Я испытываю небольшую задержку (1-3 секунды) при сохранении текстового файла, но кроме этого это похоже на работу с вашей локальной файловой системой.

5 голосов
/ 27 марта 2011

Одна вещь, которую я часто использовал, состояла в том, чтобы открывать сеанс X-11, затем подключаться к моему удаленному хосту и использовать gvim поверх X. У вас будет версия редактора с полным GUI, он будеткак он работает локально, но на самом деле все работает удаленно.

Другой альтернативой является использование VNC для удаленного управления сеансом на удаленном хосте.Существует несколько VNC-клиентов для Mac.

Вы также можете использовать Mac SFTP или FTP-клиент для подключения, а затем попросить его отредактировать файл или файлы.Если вы настроили его для использования MacVim в качестве редактора, файловый ввод-вывод будет происходить через FTP-соединение прозрачно.Вот так я редактирую удаленные сайты, когда у меня нет возможности ssh.

MacVim и плагин vim для netrw, тем не менее, очень способны.Если вы не передадите имя файла для редактирования по команде scp://..., vim представит обычный браузер каталогов, позволяющий вам выбрать файл на удаленном компьютере и редактировать его локально.Например, это открывает соединение с моего ноутбука к себе через SSH и показывает мне домашний каталог внутри vim:

vim scp://greg@localhost//Users/greg/
2 голосов
/ 16 марта 2011

Что касается части .vimrc вашего вопроса, то в документации указано, что параметр -u может вам помочь.

-u {vimrc} Файл {vimrc} читается для инициализации.

0 голосов
/ 20 декабря 2011

MacFuse - версия предохранителя для MAC.Но, к сожалению, они больше не поддерживали проект и у него есть некоторые проблемы со Snow Leopard, но есть исправление .

0 голосов
/ 16 марта 2011

scp-ing для каждого файла будет болью в твоей заднице.

Хотя SSHFS с MacFuse работает, он может быть очень медленным. Я попробовал это пару раз на работе с огромным каналом к ​​близкому серверу, и, хотя идея сначала казалась элегантной, это был безумный опыт в пляжном мяче.

Как точно настроить сервер? Вы входите в систему под своим именем /home/username?

Если позже вы можете легко поместить все ваши материалы, связанные с Vim, в свой домашний каталог и использовать Vim на сервере почти так же, как вы используете MacVim. Вы даже можете создать ctags где-нибудь в вашем домашнем каталоге и использовать его ...

Если вы вошли как пользователь, но у вас нет домашнего каталога, вы можете поместить ваш Vim куда-нибудь, где у вас есть права на запись, и добавить его путь к master .vimrc с проверкой if / else на ваше имя пользователя.

Я не тестировал это решение, но использую аналогичную технику для загрузки различных настроек, когда я нахожусь на моем Mac или на моем Ubuntu box:

if has("gui_running")

  "various gui settings

  let os=substitute(system('uname'), "\n", "", "")
  if os == "Darwin" || os == "Mac"

    "Mac-specific settings

  elseif os == "Linux"

    "Linux-specific settings

  endif

endif

Может быть, с помощью команды whoami

...