Удаленное редактирование файлов в Sublime Text 2 по SSH

  • Tutorial
Речь пойдет об использовании rmate, небольшого скрипта позволяющего из консоли открыть удаленный документ в локальном текстовом редакторе, вместо nano или vim, он был написан для TextMate и те кто перешел на ST2 с этого редактора, наверняка пользуются этим инструментом, да и «матерые разрабы» не найдут в посте много нового, но если вы только начали пользоваться ST2 и единственный инструмент удаленного редактирования о котором вы слышали, это плагин SFTP, добро пожаловать под кат за подробностями.

Сразу хочу уточнить, на удаленном сервере у меня Ubuntu, а передо мной Mac OS X, на других системах не пробовал, если напишите о вашем опыте с другими ОС в комментариях, буду премного благодарен.

На самом деле, все предельно просто, не так просто как с упомянутым плагином SFTP, но все же, под силу даже совсем новичку.
Первое, что нужно сделать, установить плагин rsub для ST2 (доступен через Package Control), затем, если еще не создан, то создайте файл config в ~/.ssh и добавьте в него несколько строк
Host myhost
  Hostname <ip-адрес удаленного сервера>
  RemoteForward 52698 127.0.0.1:52698

Это нужно для того, чтобы туннель для вашего сервера всегда создавался автоматически, без ключа -R и объявления пробрасываемых портов. Порт 52698 прослушивается плагином rsub по умолчанию, вы можете использовать другой.

Теперь, подключитесь к удаленному серверу
ssh myhost #или root@myhost

Скачайте rmate
curl https://raw.github.com/aurora/rmate/master/rmate > rmate

Переместите в /usr/local/bin и дайте файлу права на исполнение
sudo mv rmate /usr/local/bin
sudo chmod +x /usr/local/bin/rmate

И это все, работает, запустите ST2 и выполните команду rmate вместо обычных nano или vim
rmate /var/www/test.html #или любой другой файл на сервере
Поделиться публикацией

Комментарии 23

    +2
    Вот а я только об этом подумал и тут автор с хабром ответили на мой вопрос :)
    Благодарю
      0
      Насколько я помню rmate это скрипт для TextMate 2 с такой же функциональностью. Вот что значит поддержка плагинов TextMate.

      Это решение имеет такие же проблемы как и у TextMate 2? Заход по ssh во втором окне все ломает, ибо порт уже используется.
        0
        ST2 открывает файлы во вкладках, в одном окне, даже если вытащить вкладки в разные окна, rsub будет открывать новые файлы в первом.
        +2
        Странно. aurora/rmate как раз и отличается тем, что это реализация на Bash, а не на Ruby (как textmate/rmate). Вы уверены, что удаленно нужен Ruby?
          0
          Да, верно, перепутал плагины, пост поправил, спасибо.
          +1
          Так и не понял из статьи в чем преимущество перед SFTP плагином?
            –1
            А кто говорил о преимуществах, это просто еще один инструмент для удаленного редактирования, но лично для меня, плюс rmate заключается в использовании локального редактора, вместо nano и vim
              –1
              А при чем тут nano и vim? SFTP, ИМХО, действительно лучше.
                –1
                При том, что файлы на сервере можно открыть в локальном текстовом редакторе, вместо консольных.
                  –2
                  А ST2 давно консольным стал? SFTP позволяет открывать файлы с сервера непосредственно в ST2.
                    +1
                    Вы правда не понимаете?
                    Попробую проще.
                    ST2 = «Локальный текстовый редактор»
                    nano = «Консольный текстовый редактор»
                    Описаный мною способ, позволяет открыть файл находящийся на удаленном сервере, в локальном текстовом редакторе, которым, как мы уже выяснили, является ST2, т.е набирая в консоли:
                    rmate some/file.txt

                    вместо:
                    nano some/file.txt

                    мы этот файл откроем в ST2, локально.
                    Плагин SFTP же, позволяет вам открыть локальный файл в ST2 и потом при сохранении синхронизировать его с сервером.
              0
              sftp очень прохо переваривавает битые кодировки в именах файлов
              0
              Что происходит с открытыми файлами при потере коннекта с удаленным хостом?

              У меня такая проблема:

              Открываю файлы из гуевого SFTP-клиента на редактирование, если ssh порвался, файлы остаются в редакторе и не понятно до сохранения какой файл уже нельзя сохранить, а какой доступен.
                0
                Тут ситуация примерно такая же и более того, если тунель упадет, придется перезагружать ST2, но файлы остаются открытыми и при перезагрузке ST2 не сохраненные изменения не пропадают.
                +5
                а чем sshfs плох? имхо более универсальное решение
                  0
                  Ни чем, думаю лучше иметь в запасе несколько инструментов, даже если не пригодятся
                  +1
                  Windows 7 + Debian, завелось без запинок.
                    0
                    Я подобное решаю при помощи Gigolo, ну или autofs.
                      0
                      Я меня рабочий комп MacOS X, а дев сервер под Ubuntu. Использую Sublime Text 3. Подключаюсь к серверу по NFS

                      На сервере:

                      /etc/exports:
                      /var/www 127.0.0.1(rw,all_squash,anonuid=0,anongid=0,sync,insecure)

                      подключение канала:
                      ssh root@devserver -L 61001:127.0.0.1:2049 -L 62001:127.0.0.1:2233

                      монтирование ФС:
                      mount -t nfs -o tcp,rsize=8192,wsize=8192,intr,rw,bg,noowners,nosuid,port=61001,mountport=62001,noauto localhost:/var/www mnt

                      Еще сделаны некоторые настройки портов на сервере, чтобы NFS использовала фиксированные порты.
                      Конфиг весьма небезопасный, используйте только если понимаете, что делаете.
                        0
                        Про порты тут подробно: http://www.howtoforge.com/nfs_ssh_tunneling. В моем случае дев сервер это облачный сервер у Селектела, в консоли управления в закладке «Загрузка» установил параметры ядра lockd.nlm_tcpport=2232 lockd.nlm_udpport=2232 и все заработало
                          0
                          О SSH лучше заботиться autossh, ибо сеть — вещь непредсказуемая. Тоже самое можно сказать и о mount, вместо неё лучше использовать какой-нибудь automounter.
                          0
                          чудо-поиск, индексация и прочий автокомплит в ST2 нормально работают лишь с локальными файлами. работать с реальными проектами, поверх сетевых файловых сиситем, мне показалось непрактичным (может сеть такая :()

                          механика плагина sftp в этом смысле вполне адекватна — саблайм работает с локальными файлами, а плагин предоставляет кучу ручек для разных вариантов синхронизации с удаленной машинкой. но если при синхронизации падает соединение, то, действительно, спасает лишь перезапуск саблайма. а еще он ацкий тормоз при копировании большого количества файлов. было бы круто, если бы они запили в качестве транспорта rsync, вместо костылей над sftp.

                          еще можно повесить github.com/axkibe/lsyncd. правда в этом случае синхронизация выполняется асинхнонно, и при кодинге сильно не хватает обратной связи со стороны редактора (не понятно, файл синхронизировался с удаленной машинкой или еще нет).
                            0
                            Использую OSXFuse. Подключаю нужную папаку через sshfs и пользуюсь ST3.
                            Так же использую удобный  workflow для Alfred 2 с помощью которого можно быстро поключить нужный ресурс.

                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                            Самое читаемое