Як користуватися Sublime через SSH


236

Я намагаюся використовувати Sublime Text 2 в якості редактора, коли я SSH заходжу на свій робочий сервер, і я натикаюся. Я знайшов це http://urbangiraffe.com/2011/08/13/remote-editing-with-sublime-text-2/ (серед багатьох інших публікацій), схоже, що це може допомогти, але я не дотримуюся його точно , особливо з якими значеннями я повинен вводити віддалену змінну у рядку 5. Я встановлюю "/ Users / path / to / local / copy" у свій локальний кореневий каталог, але я не знаю, чи правильно це, чи є більше робити. Будь-які думки? Я на OSX10.8


12
Мені було легше використовувати osxfuseтаsshfs на своєму mac локально монтувати віддалені каталоги, а потім редагувати через ST2.
AGS

Існує популярний плагін ST2 для sftp. Ось подальше пояснення системи, на яку я вважаю, що AGS посилається: superuser.com/questions/134140/… . У мене виникли проблеми з автоматичним завантаженням при вході в систему, і мені довелося скористатися обхідним сценарієм входу, зробленим за допомогою Platypus. Також мені була потрібна краща версія макфузи - я побачу, чи зможу знайти посилання, якщо вас зацікавило.
законник

За допомогою Snow Leopard (10.6.8) мені потрібен оновлений сервер для MacFuse (тобто, macfuse-core-10.5-2.1.9.dmg) - ось посилання на те, де я його взяв : blog.urbaninsight.com/2011 / 04/18 / ... Якщо вас цікавить, це може врятувати вам багато головних болів.
законник

Це не було б в прямому ефірі, і, можливо, менш підходить для перегляду файлів журналів та інших матеріалів, але часто налаштовувати гітоліт може бути того варто. Просто потягніть, і у вас є все, з чим грати. Тоді знову багато людей мають швидкий Інтернет в ці дні, і вони не відчують відставання в Netwok ... Все залежить від вашого налаштування.

Відповіді:


161

Є три способи:

  • Використовуйте плагін SFTP (комерційний) http://wbond.net/sublime_packages/sftp - я особисто рекомендую це, оскільки після налаштування загальнодоступних ключів SSH із парольною фразою це безпечно, легко та вартує кожної копійки http://opensourcehacker.com/2012/ 10/24 / ssh-key-and-passwordless-login-basics-for-developers /

  • Монтуйте пульт як локальну файлову систему за допомогою osxfuseта sshfsяк зазначено в коментарях. Це може бути мало складним, залежно від версії OSX та ваших навичок роботи з файловими системами UNIX.

  • Злому разом щось на кшталт rmate, яке робить редагування файлів через віддалений тунель, використовуючи якийсь локальний демон (дуже складний, громіздкий, але судо сумісний) http://blog.macromates.com/2011/mate-and-rmate/

Крім того, теоретично ви можете встановити X11 на віддалений сервер і запустити там Sublime через VNC або X11 переадресацію, але робити це не було б сенсу.


1
Дивіться також пов’язані питання superuser.com superuser.com/questions/581292/…
Mikko Ohtamaa

11
Комбо SSHFS / osxfuse працювало на мене! Дякую. Для інших з цією проблемою: github.com/osxfuse/osxfuse/wiki/SSHFS
thumbtackthief

Чи можна із плагінми sftp використовувати такі інструменти, як інтерактивні оболонки та repl, як у emacs?
Edmondo1984

@ Edmondo1984 просто використовуйте для цього справжній термінал
Mikko Ohtamaa

1
Sublime SFTP насправді дозволяє або редагувати файли віддалено, але без панелі проектів ST (тому не йти куди завгодно ), або робить щось на зразок rsync. Існує безкоштовна пробна версія для тестування.
Wernight

102

Ви можете використовувати rsub , який надихається на TextMate rmate. З опису:

Rsub - це реалізація функції rmate TextMate 2 для Sublime Text 2, що дозволяє редагувати файли на віддаленому сервері за допомогою пересилання / тунелювання портів SSH.

Ось хороший підручник, як правильно його налаштувати.


2
Я також погоджуюся з тим, що запускати rsub на роботу - це нескладно, і дозволяє судо, що чудово. Я зіткнувся з деякими проблемами, змусивши його працювати правильно, але ТАК відповів і на це: stackoverflow.com/questions/18938950/…
Ross R

7
будь-ласка, позначте цю відповідь замість першої, оскільки це безкоштовно
Теодор,

Посібник працював ідеально, навіть для загального терміналу noob, як я. Дякую!
Генрік

66

Я працюю в Windows і використовую 4 методи: SFTP , WinSCP , Unison і Sublime Text на Linux з перенаправленням X11 через SSH в Windows (так, ви можете це зробити без брудних конфігурацій та використання безкоштовного інструменту).

Четвертий спосіб найкращий, якщо ви можете встановити програмне забезпечення на свою машину Linux.

Четвертий спосіб:

MobaXterm

  1. Встановіть MobaXterm у Windows
  2. SSH у ваш Linux-скриньку від MobaXterm
  3. У свій Linux скринька встановіть Sublime Text 3. Ось як це робити в Ubuntu
  4. У командному рядку почніть піднесене з subl
  5. Це воно! Тепер у вас є піднесений текст, який працює на Linux, але його вікно працює на робочому столі Windows. Це можливо, тому що MobaXterm обробляє пересилання X11 для SSH для вас, тож вам не доведеться робити нічого прискіпливого, щоб продовжити його. Можливо, буде затримка в невеликій кількості, але ваші файли ніколи не синхронізуються, оскільки ви редагуєте їх прямо на машині Linux.

Примітка. Коли ви посилаєтесь на subl, якщо він скаржиться на певну бібліотеку, переконайтеся, що ви встановите їх, щоб успішно викликати підмережевий текст з mobaxterm.

Якщо ви не можете встановити програмне забезпечення на свій Linux-скриньку, найкраще - Unison. Чому?

  • Це безкоштовно
  • Це швидко
  • Це надійно і не важливо, яким редактором ви користуєтесь
  • Ви можете створювати власні списки ігнорування

SFTP

Налаштування: Встановіть пакет SFTP Sublime Text. Цей пакет вимагає ліцензії.

  1. Створіть нову папку
  2. Відкрийте його як проект піднесеного тексту.
  3. На бічній панелі клацніть правою кнопкою миші папку та виберіть Map Remote.
  4. Відредагуйте файл sftp-config.json
  5. Клацніть правою кнопкою миші папку на кроці 1, виберіть завантаження.
  6. Робота на місцях.

У sftp-config я зазвичай встановлюю:

"upload_on_save": true,
"sync_down_on_open": true,

Це, на додаток до SSH-терміналу до машини, дає мені досить бездоганний досвід віддаленого редагування.

WinSCP

  1. Встановіть і запустіть WinSCP
  2. Перейдіть до Налаштування (Ctrl + Alt + P) і натисніть кнопку Передати, потім - Додати. Назвіть попередньо встановлений.
  3. Встановіть режим передачі у двійковий (не потрібно конверсій ліній)
  4. Встановіть модифікацію файлу на "Без змін"
  5. Натисніть кнопку "Редагувати" поруч із "Маска файлів" та встановіть файли та папки, що включають та виключають (корисно, якщо у вас є папка .git / .svn або ви хочете виключити синхронізовану продукцію збірки).
  6. Натисніть кнопку ОК
  7. Підключіться до віддаленого сервера та перейдіть до цікавої папки
  8. Виберіть порожню папку на локальній машині.
  9. Виберіть новостворені налаштування передачі.
  10. Нарешті, натисніть Ctrl + U (Команди> Оновлювати віддалений каталог) та переконайтесь, що "Синхронізувати при запуску" та "Оновити підкаталоги".

З цього моменту WinSCP буде синхронізувати ваші зміни.

Робота в локальній папці за допомогою SublimeText. Просто переконайтеся, що Sublime Text встановлений для відгадування закінчень рядків у файлі, який редагується.

Унісон

Я виявив, що якщо вихідне дерево є масивним (близько декількох сотень МБ з глибокою ієрархією), то метод WinSCP, описаний вище, може бути трохи повільним. Ви можете отримати набагато кращі показники за допомогою Unison . Суть полягає в тому, що Unison не є автоматичним (вам потрібно запустити його натисканням клавіші), і для роботи на вашій машині Linux потрібен серверний компонент. Вгору сторона полягає в тому, що передачі неймовірно швидкі, це дуже надійно, і ігнорування файлів, папок і розширень надзвичайно просто налаштувати.


+1 для SFTP setupпосилання. Я не знав, чи SFTP було програмним забезпеченням Windows або пакетом Sublime.
Кевін Мередіт

Я використовую sftp для ST2, PuTTY і трохи FileZilla для гарної міри. Це найкраща установка, яку я знайшов після багатьох спроб. Однак мені не подобається зберігати локальний набір файлів. Я дуже віддаю перевагу ST над термінальними редакторами liek vi або nano - передача ST3 на сам сервер звучить як приємна угода. thx для підказки -
Bosworth99

Якщо ви користувач кібердуком ( cyberduck.io/?l=uk ), підмережевий текст дуже добре інтегрується.
sakurashinken

33

Як відповідь до відповіді @ ubik, ось три простих (одноразових) дії, щоб отримати команду 'subl', що працює на віддаленому сервері:

  1. [ Місцевий ] Встановіть rsubпакунок у піднесений текст за допомогою диспетчера пакетів піднесених
  2. [ Місцевий ] Виконайте таку команду Bash (це створить тунель SSH , який є секретним соусом rsub):

    printf "Host *\n    RemoteForward 52698 127.0.0.1:52698" >> ~/.ssh/config
  3. [ Сервер ] Виконайте таку команду Bash на віддаленому сервері (це встановить команду оболонки 'subl'):

    sudo wget -O /usr/local/bin/subl https://raw.github.com/aurora/rmate/master/rmate; sudo chmod +x /usr/local/bin/subl

І вуаля! Зараз ви використовуєте Sublime Text через SSH.

Ви можете відкрити прикладний файл в Sublime Text з сервера чимось подібним subl ~/test.txt


1
Я постійно отримую: /usr/local/bin/subl: connect: Connection refused /usr/local/bin/subl: line 200: /dev/tcp/localhost/52698: Connection refused Unable to connect to TextMate on localhost:52698. Думки?
thumbtackthief

1
Так: до команди ssh додайте -R 52698: localhost: 52698. Дивіться тут: stackoverflow.com/questions/18938950/…
Ross R

Підказка Noob, яка мені здалася корисною: пам’ятайте, що Sublime працює на вашій локальній машині. Це фактично запускає сервер.
Магне

@RossR - це не працює. Шахта виглядає так: "RemoteForward 52698 127.0.0.1.1.1262698 -R 52698: localhost: 52698" і все ще видає ту саму помилку: "Не вдається підключитися до TextMate на localhost: 52698"
FooBar

1
вище працює, вам просто потрібно перезапустити віддалений сервер згодом, або ви продовжуватимете отримувати з'єднання відхилено помилку.
ctf0

10

Я перебуваю на MacOS, і найзручніший спосіб для мене - це використання CyberDuck , який є безкоштовним (також доступний для Windows). Ви можете підключитися до віддаленої файлової системи SSH та редагувати файл за допомогою місцевого редактора. Що CyberDuck робить, це завантажити файл у тимчасове місце на локальній ОС та відкрити його у своєму редакторі. Після збереження файлу CyberDuck автоматично завантажує його у вашу віддалену систему. Здається прозорим, ніби ви редагуєте віддалений файл за допомогою місцевого редактора. Розробники Cyberduck також роблять MountainDuck для монтажу віддалених файлових систем.


1
я схвалив, хоча це не працює з sudo ... (файли, для запису яких потрібен суперпопулярний доступ)
Tiago Coelho

1
Прийшов опублікувати це точне рішення. Поки ви використовуєте CyberDuck, це дуже зручно. Однак майте на увазі, що він працює лише під час роботи CyberDuck. Ви можете також використовувати той же метод для відкриття файлів в інших редакторах, але я виявив, що не всі вони надійно працюватимуть і можуть втратити зв’язок або мовчки перейти на збереження локально, а не віддалено (наприклад, Microsoft Excel). Ніколи не було жодної проблеми з цим за допомогою Sublime.
користувач5359531

8

Ви можете спробувати щось, над чим я працював під назвою « ксено ». Це дозволить вам відкривати файли / папки в Sublime Text (або будь-який місцевий редактор дійсно) через SSH-з'єднання та автоматично синхронізувати зміни на віддаленій машині. Він повинен працювати майже на всіх системах POSIX (я сам використовую його з OS X для підключення до машин Linux та редагування файлів у Sublime Text). Це безкоштовно та з відкритим кодом. Я хотів би отримати відгуки.

Для отримання додаткової інформації: це в основному Git / SSH-розбивка, написана на Python, що дозволяє редагувати файли та папки на віддаленій машині в локальному редакторі. Вам не потрібно налаштовувати модулі ядра, вам не потрібно мати постійне з'єднання, воно все автоматично, і це не заважатиме існуючому керуванню джерелом, оскільки він використовує неробочий сховище Git. Крім того, оскільки він побудований на Git, він надзвичайно швидкий і підтримує автоматичне об'єднання файлів, які можуть змінюватися на обох кінцях, на відміну від SSHFS / SFTP, який просто заглушить будь-які файли зі старими часовими позначками.


І я написав кілька простих дописів у блозі зі сценаріями та параметрами конфігурації, які роблять ST2 + Xeno дивовижним комбо .. www.yeraze.com
Yeraze

5

Ви можете використовувати sftp для монтажу віддаленого каталогу на вашій локаційній машині, а потім просто відкрити файли, використовуючи текст Sublime так, як зазвичай.

Для монтажу віддаленого каталогу за допомогою sftp введіть наступне у свій файловий менеджер Linux;

sftp://user@remote_box.com:22/home/user/code_directory

Це може здатися повільним, залежно від швидкості вашого Інтернету. Але це працювало для мене.


5

Я знаю, що це вже давно, але у мене дійсно класний спосіб зробити це, яким варто поділитися.

Що потрібно в Conemu і WinSCP . Це прості інструкції

  1. Відкрийте WinSCP.exe та увійдіть на потрібний віддалений сервер (я
    виявив, що важливо увійти до вкладення, перш ніж приєднувати ...).

  2. У налаштуваннях для WinSCP - два налаштування, які потрібно змінити. Виберіть інтерфейс типу Explorer, а не Commander - щоб ви не бачили локальні файли. Якщо ви цього не хочете (але, здається, тут би це смоктало). Налаштуйте Sublime як редактор за замовчуванням.

  3. Коли ConEmu відкриється, клацніть правою кнопкою миші панель вкладок та виберіть параметр Attach to.... Відкриється діалогове вікно із запущеними програмами. Виберіть, WinSCP та виберіть Добре. Тепер ConEmu матиме відкриту вкладку, на якій WinSCP відображатиме ваші віддалені файли.

  4. Клацніть правою кнопкою миші на вкладці WinSCP і виберіть New console.... Коли відкриється діалогове вікно, введіть шлях до виконуваного файлу Sublime у вашій системі. Перш ніж натиснути Start, у полі, де написано, New console splitвиберіть перемикач to rightта встановіть відсоток. Зазвичай я вибираю 75%, але ви можете налаштувати це на свій смак, і це можна буде змінити пізніше.

    1. Тепер ви побачите Sublime у тому ж вікні, що працює праворуч від WinSCP. У Sublime у меню Перегляд виберіть Sidebar->Hide Sidebarі bam, тепер у вас є віддалені файли точно таким же чином, як і на місцевому рівні - з кількома застереженнями, звичайно, які випливають із редагуванням чого-небудь віддаленого. WinSCP, однак, швидко світлішає.

У мене є два монітори - лівий монітор, браузер Chrome, правий монітор - редактор коду. Також в ConEmu, я створюю ще одну вкладку і ssh на сайт, над яким я працюю, тому я можу робити такі дії, як запуск gulpабо gruntвіддалено, а також маніпулювати файлами з командного рядка. Серйозно прискорили розвиток.

Ось скріншот:

Знімок екрана налаштування


5

Це найпростіший спосіб локального редагування файлів, які живуть на віддаленому хості, де ви раніше встановили ssh на віддалений IP

# issue on local box

sudo apt-get install sshfs   # on local host install sshfs ( linux )

# on local box create secure mount of remote directory

export REMOTE_IP=107.170.58.249 # remote host IP

sshfs myremoteuserid@${REMOTE_IP}:/your/remote/dir  /your/local/dir # for example

Готово !!!

Тепер на локальному хості просто починайте редагувати файли ... коли ви перераховуєте dir локально, він може нічого не перелічити, поки ви не перейдете в subdir або перерахуєте певний файл ... ледача завантаження ... це не впливає на редагування файлів

subl /your/local/dir/magnum_opus.go # local file edit using sublime text

тому вище фактично редагування віддаленого файлу на

/your/remote/dir/magnum_opus.go  # remote file on box $REMOTE_IP

Для OSX чи Windows дивіться цю туту від представників фольклору у Digital Ocean


4

Іншим рішенням mac, подібним до osxfuse, є просто використання клієнта Transmit FTP від ​​програмного забезпечення Panic, що дозволяє монтувати віддалену папку як локальний диск. Він підтримує SFTP, який є дуже захищеним.


Цей варіант мені дуже подобається. Монтаж повинен дозволяти вам відкрити весь диск як піднесений проект.
Мік Фок

3

Я працював над проектом під назвою GiySync . Це ще потребує певної роботи, але вона є відкритим кодом, і я використовую її щодня протягом декількох років. Я також працюю над рідною версією OS X, яку я назвав GitSyncApp

Зараз це лише ОС X, але додати підтримку для Linux, а можливо і Windows, слід легко.

Він працює, переглядаючи події файлової системи і використовує git для синхронізації папки проекту на локальній машині та сервері.

Я спробував інші рішення, такі як osx fuse, Expand Drive, Transmit, кілька рішень, які використовували rsync і т. Д. Всі вони працюють "добре" для невеликих проектів, але якщо ви працюєте з великим кодом, вони не працювали для мене.

Багато варіантів файлової системи роблять кешування для підвищення продуктивності, що добре, поки це не так. Наприклад, якщо ви працюєте з іншими людьми, а хтось інший змінює файли на сервері.

Я також зіткнувся з проблемами, якщо я був у невдалій або повільній мережі, де я опинився б із порожніми файлами. Або файл, який не синхронізувався, кешування стало дивним; сподіваємось, ви скоїли нещодавно. Використання git вирішує цю проблему, оскільки вона перевіряє цілісність кожного комітету.

Дві бонусні функції:

  1. Ви закінчуєте зобов'язання за кожне заощадження. Це не дуже корисно, але якщо вам колись доведеться повертатися назад, ви можете.
  2. Він працює з будь-яким текстовим редактором.

0

Залежно від ваших точних потреб, ви можете розглянути можливість використання BitTorrent Sync. Створіть загальну папку на домашньому ПК та на робочому ПК. Відредагуйте файли на домашньому ПК (використовуючи Sublime або все, що завгодно), і вони автоматично синхронізуються під час збереження. BitTorrent Sync не покладається на центральний сервер, який зберігає файли (а-ля Dropbox тощо), тому теоретично вам слід уникати будь-яких проблем через те, що сторона зберігає конфіденційну інформацію.


0

Рішення, яке для мене чудово працювало - редагуйте локально на Mac, а файл автоматично синхронізується на віддаленій машині

  1. Переконайтеся, що у вас є без пароля вхід на віддалену машину. Якщо ні, виконайте ці кроки http://osxdaily.com/2012/05/25/how-to-set-up-a-password-less-ssh-login/

  2. створити файл у ~ / Бібліотеці / LaunchAgents / filesynchronizer.plist із наступним вмістом:

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>filesynchronizer</string> <key>ProgramArguments</key> <array> <string>/usr/bin/rsync</string> <string>-avz</string> <string>/Users/USERNAME/SyncDirectory</string> <string>USERNAME@REMOTEMACHINE:~</string> </array> <key>WatchPaths</key> <array> <string>/Users/USERNAME/SyncDirectory</string> </array> </dict> </plist>

  3. У вікні термінала запустіть

    launchctl load ~/Library/LaunchAgents/filesynchronizer.plist

  4. Це воно. Будь-які зміни будь-яких файлів у ~ / SyncDirectory будуть синхронізовані до ~ / SyncDirectory на віддаленій машині. Місцеві зміни замінять будь-які віддалені зміни.

Це створює запущене завдання, яке контролює SyncDirectory, і щоразу, коли щось змінюється, запускає rsync для синхронізації каталогу з віддаленою машиною.


Це двостороння синхронізація?
покусав

Немає; Місцевий лише для віддаленої машини
Ран Локар

0

lsyncd здається гарною альтернативою підходу sshfs. Якщо ви використовуєте "-delay 0", він працює в режимі реального часу.


0

Використовуйте FileZilla

Це стосується користувачів Mac та Windows (я використовую на Mac). Я використовував кілька перерахованих відповідей протягом багатьох років і виявив, що FileZilla добре відповідає моїм потребам під час редагування файлів на віддаленому хості, до якого я маю доступ SSH. Це також швидко налаштувати.

  • Я налаштовую нове підключення до сервера
  • підключитися до сервера
  • клацніть правою кнопкою миші на файл, який я хотів би відредагувати та вибрати View/Edit.

Це відкриває мій редактор за замовчуванням (Sublime), але він буде працювати з будь-яким встановленим вами редактором.

  • Після збереження файлу Filezilla автоматично запитує мене про те, чи хотів би я "Завантажити цей файл назад на сервер", натискаю "Так", після чого він оновлюється.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.