Jak korzystać z Sublime przez SSH

236

Usiłuję użyć Sublime Text 2 jako edytora, gdy SSH jest podłączony do mojego serwera roboczego i mam problem. Znalazłem ten http://urbangiraffe.com/2011/08/13/remote-editing-with-sublime-text-2/ (wśród wielu innych postów), który wygląda na to, że może pomóc, ale nie przestrzegam go dokładnie , w szczególności z wartościami, które powinienem wprowadzić dla zmiennej zdalnej w linii 5. Ustawiam „/ Users / path / to / local / copy” w moim lokalnym katalogu głównym, ale nie wiem, czy to prawda, czy jest więcej do zrobienia. jakieś pomysły? Jestem na OSX10.8

thumbtackthief
źródło
12
Odkryłem, że łatwiej jest używać osxfuseisshfs na moim komputerze Mac lokalnie montować zdalne katalogi, a następnie edytować je za pomocą ST2.
AGS
Istnieje popularna wtyczka ST2 do sftp. Oto dalsze wyjaśnienie systemu, do którego wierzę AGS odnosi: superuser.com/questions/134140/... . Miałem problem z automatycznym ładowaniem podczas logowania i musiałem użyć obejścia skryptu logowania wykonanego za pomocą Platypus. Potrzebowałem też lepszej wersji Macfuse - zobaczę, czy mogę znaleźć link, jeśli jesteś zainteresowany.
prawnik
W systemie Snow Leopard (10.6.8) potrzebowałem zaktualizowanego rdzenia dla MacFuse (tj. Macfuse-core-10.5-2.1.9.dmg) - oto link do skąd go mam: blog.urbaninsight.com/2011 / 04/18 /… Jeśli jesteś zainteresowany, to powinno zaoszczędzić Ci wielu bólów głowy.
prawnik
Nie byłby na żywo, a może mniej odpowiedni do oglądania plików dziennika i innych rzeczy, ale często konfiguracja gitolitu może być tego warta. Wystarczy pociągnąć i masz wszystko, z czego możesz się pobawić. Z drugiej strony wiele osób ma teraz szybki Internet i nie poczuje opóźnienia Netwok ... Wszystko zależy od konfiguracji.

Odpowiedzi:

161

Istnieją trzy sposoby:

Teoretycznie możesz także zainstalować X11 na zdalnym serwerze i uruchomić Sublime na VNC lub X11, ale nie ma sensu tego robić.

Mikko Ohtamaa
źródło
1
Zobacz także powiązane pytanie superuser.com superuser.com/questions/581292/...
Mikko Ohtamaa
11
Kombinacja SSHFS / osxfuse działała dla mnie! Dzięki. Dla innych z tym problemem: github.com/osxfuse/osxfuse/wiki/SSHFS
thumbtackthief
czy ktoś z wtyczką sftp może używać narzędzi takich jak interaktywne powłoki i replikować jak w emacs?
Edmondo1984,
@ Edmondo1984 po prostu użyj do tego prawdziwego terminala
Mikko Ohtamaa
1
Sublime SFTP w rzeczywistości umożliwia albo zdalną edycję plików, ale bez panelu projektu ST (więc nie idź do Anywhere ), lub robi coś w stylu rsync. Jest bezpłatny okres próbny, aby go przetestować.
Wernight
102

Możesz użyć rsub , który jest inspirowany TextMate rmate. Z opisu:

Rsub jest implementacją funkcji „rmate” TextMate 2 dla Sublime Text 2, umożliwiającej edycję plików na zdalnym serwerze za pomocą przekierowania / tunelowania portów SSH.

Oto dobry samouczek na temat prawidłowej konfiguracji.

ubik
źródło
2
Zgadzam się również, że uruchomienie rsub do pracy jest bardzo proste i pozwala na sudo, co jest świetne. Wpadłem na pewne problemy z poprawnym działaniem, ale SO też miał na to odpowiedź: stackoverflow.com/questions/18938950/...
Ross R
7
zaznacz tę odpowiedź zamiast pierwszej, ponieważ jest ona bezpłatna
theodore
Przewodnik działał idealnie, nawet dla totalnego terminalu, takiego jak ja. Dzięki!
Henrik
66

Korzystam z systemu Windows i użyłem 4 metod: SFTP , WinSCP , Unison i Sublime Text w systemie Linux z X11 przesyłaniem dalej przez SSH do Windows (tak, możesz to zrobić bez niechlujnych konfiguracji i korzystania z bezpłatnego narzędzia).

Czwarty sposób jest najlepszy, jeśli możesz zainstalować oprogramowanie na komputerze z systemem Linux.

Czwarty sposób:

MobaXterm

  1. Zainstaluj MobaXterm w systemie Windows
  2. SSH do twojego Linuxa od MobaXterm
  3. Na swoim Linux-ie zainstaluj Sublime Text 3. Oto jak na Ubuntu
  4. W wierszu polecenia rozpocznij wysublimowanie za pomocą subl
  5. Otóż ​​to! Masz teraz wysublimowany tekst działający w systemie Linux, ale jego okno działa na pulpicie systemu Windows. Jest to możliwe, ponieważ MobaXterm obsługuje dla Ciebie przekazywanie X11 przez SSH, więc nie musisz robić nic dziwnego, aby to uruchomić. Może wystąpić niewielkie opóźnienie, ale Twoje pliki nigdy nie będą niezsynchronizowane, ponieważ edytujesz je bezpośrednio na komputerze z systemem Linux.

Uwaga: Podczas wywoływania subl, jeśli narzeka na określoną bibliotekę - upewnij się, że je zainstalowałeś, aby pomyślnie wywołać sublimetr z mobaxterm.

Jeśli nie możesz zainstalować oprogramowania na swoim Linux-ie, najlepszym rozwiązaniem jest Unison. Czemu?

  • Jest wolne
  • To jest szybkie
  • Jest niezawodny i nie ma znaczenia, którego edytora używasz
  • Możesz tworzyć własne listy ignorowanych

SFTP

Konfiguracja: zainstaluj pakiet SFTP Sublime Text. Ten pakiet wymaga licencji.

  1. Stworzyć nowy folder
  2. Otwórz go jako projekt Sublime Text.
  3. Na pasku bocznym kliknij folder prawym przyciskiem myszy i wybierz polecenie Mapuj zdalnie.
  4. Edytuj plik sftp-config.json
  5. Kliknij folder prawym przyciskiem myszy w kroku 1 wybierz opcję pobierz.
  6. Pracuj lokalnie.

W sftp-config zwykle ustawiam:

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

To, oprócz terminalu SSH do maszyny, zapewnia mi dość płynne zdalne edytowanie.

WinSCP

  1. Zainstaluj i uruchom WinSCP
  2. Przejdź do Preferencji (Ctrl + Alt + P) i kliknij Transfer, a następnie Dodaj. Nazwij ustawienie wstępne.
  3. Ustaw tryb przesyłania na binarny (nie chcesz konwersji linii)
  4. Ustaw modyfikację pliku na „Bez zmian”
  5. Kliknij przycisk Edytuj obok Maski pliku i skonfiguruj dołączanie i wykluczanie plików i folderów (przydatne, gdy masz folder .git / .svn lub chcesz wykluczyć produkty kompilacji z synchronizacji).
  6. Kliknij OK
  7. Połącz się ze zdalnym serwerem i przejdź do odpowiedniego folderu
  8. Wybierz pusty folder na komputerze lokalnym.
  9. Wybierz nowo utworzone ustawienia transferu.
  10. Na koniec naciśnij Ctrl + U (Polecenia> Aktualizuj katalog zdalny) i upewnij się, że zaznaczono „Synchronizuj przy uruchomieniu” i „Aktualizuj podkatalogi”.

Odtąd WinSCP będzie synchronizował twoje zmiany.

Pracuj w folderze lokalnym za pomocą SublimeText. Upewnij się tylko, że Sublime Text jest ustawiony na odgadywanie zakończeń linii z edytowanego pliku.

Unisono

Odkryłem, że jeśli drzewo źródłowe jest ogromne (około kilkuset MB z głęboką hierarchią), wówczas opisana powyżej metoda WinSCP może być nieco wolniejsza. Możesz uzyskać znacznie lepszą wydajność za pomocą Unison . Minusem jest to, że Unison nie jest automatyczny (musisz go uruchomić za pomocą naciśnięcia klawisza) i wymaga, aby komponent serwera działał na twoim komputerze z systemem Linux. Zaletą jest to, że transfery są niezwykle szybkie, bardzo niezawodne, a ignorowanie plików, folderów i rozszerzeń jest niezwykle łatwe w konfiguracji.

Carl
źródło
+1 za SFTP setuplink. Nie wiedziałem, czy SFTP to oprogramowanie Windows, czy pakiet Sublime.
Kevin Meredith
Używam sftp dla ST2, PuTTY i trochę FileZilla dla dobrej miary. To najlepsza konfiguracja, jaką znalazłem po wypróbowaniu wielu. Jednak nie lubię utrzymywać lokalnego zestawu plików. Wolę ST niż edytory terminali liek vi lub nano - tworzenie ST3 na samym serwerze brzmi jak słodka okazja. dzięki za wskazówkę -
Bosworth99
Jeśli jesteś użytkownikiem cyberduck ( cyberduck.io/?l=pl ), sublimetext bardzo dobrze się integruje.
sakurashinken,
33

W odpowiedzi na odpowiedź @ ubik, oto trzy proste (jednorazowe) kroki, aby polecenie „subl” działało na zdalnym serwerze:

  1. [ Lokalny ] Zainstaluj rsubpakiet w Sublime Text za pomocą Sublime Package Manager
  2. [ Lokalny ] Wykonaj następujące polecenie Bash (spowoduje to utworzenie tunelu SSH , który jest tajnym sosem rsub):

    printf "Host *\n    RemoteForward 52698 127.0.0.1:52698" >> ~/.ssh/config
  3. [ Serwer ] Wykonaj następujące polecenie Bash na zdalnym serwerze (spowoduje to zainstalowanie polecenia powłoki „subl”):

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

I voila! Teraz używasz Sublime Text przez SSH.

Możesz otworzyć przykładowy plik w Sublime Text z serwera za pomocą czegoś takiego subl ~/test.txt

użytkownik456584
źródło
1
Wciąż dostaję: /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. Myśli?
thumbtackthief
1
Tak: dodaj -R 52698: localhost: 52698 do komendy ssh. Zobacz tutaj: stackoverflow.com/questions/18938950/…
Ross R
Wskazówka Noob, która uważam za przydatną: Pamiętaj, aby Sublime działało na twoim komputerze lokalnym. To faktycznie uruchamia serwer.
Magne
@RossR - to nie działa. Mój wygląda tak: „RemoteForward 52698 127.0.0.1:52698 -R 52698: localhost: 52698” i nadal wyświetla ten sam błąd: „Nie można połączyć się z TextMate na localhost: 52698”
FooBar
1
powyższe działa, wystarczy później zrestartować serwer zdalny lub nadal będzie występować błąd odmowy połączenia.
ctf0
10

Korzystam z systemu MacOS, a najwygodniejszym sposobem dla mnie jest korzystanie z CyberDuck , która jest bezpłatna (dostępna również dla systemu Windows). Możesz połączyć się ze zdalnym systemem plików SSH i edytować plik za pomocą lokalnego edytora. CyberDuck pobiera plik do tymczasowego miejsca w lokalnym systemie operacyjnym i otwiera go za pomocą edytora. Po zapisaniu pliku CyberDuck automatycznie prześle go do zdalnego systemu. Wydaje się przezroczysty, jakbyś edytował zdalny plik za pomocą lokalnego edytora. Twórcy oprogramowania Cyberduck stworzyli także MountainDuck do montowania zdalnych systemów plików.

bizi
źródło
1
przegłosowałem, chociaż nie działa to z sudo ... (pliki wymagające dostępu administratora do zapisu)
Tiago Coelho
1
Przyszedł opublikować to dokładne rozwiązanie. Tak długo, jak korzystasz z CyberDuck, jest to bardzo wygodne. Należy jednak pamiętać, że działa tylko podczas działania CyberDuck. Możesz również użyć tej samej metody do otwierania plików w innych edytorach, ale odkryłem, że nie wszystkie z nich będą działały niezawodnie i mogą utracić połączenie lub po cichu przejść do zapisywania tylko lokalnie zamiast zdalnie (np. Microsoft Excel). Jednak nigdy nie miałem z tym problemu przy użyciu Sublime.
user5359531,
8

Możesz spróbować czegoś, nad czym pracowałem, zwanego „ xeno ”. Umożliwi to otwieranie plików / folderów w Sublime Text (lub dowolnym lokalnym edytorze) za pośrednictwem połączenia SSH i automatyczne synchronizowanie zmian na zdalnym komputerze. Powinien działać na prawie wszystkich systemach POSIX (sam używam go z OS X do łączenia się z maszynami Linux i edycji plików w Sublime Text). Jest darmowy i open source. Chciałbym trochę opinii.

Aby uzyskać więcej informacji: jest to zasadniczo zestawienie Git / SSH napisane w języku Python, które pozwala edytować pliki i foldery na zdalnym komputerze w lokalnym edytorze. Nie musisz konfigurować modułów jądra, nie musisz mieć stałego połączenia, wszystko odbywa się automatycznie i nie będzie kolidować z istniejącą kontrolą źródła, ponieważ korzysta z niedziałającego repozytorium Git. Ponadto, ponieważ jest zbudowany na Git, jest niezwykle szybki i obsługuje automatyczne łączenie plików, które mogą się zmieniać na obu końcach, w przeciwieństwie do SSHFS / SFTP, który po prostu zatka dowolne pliki ze starszymi znacznikami czasu.

spustoszenie
źródło
Napisałem też kilka prostych postów na blogu ze skryptami i opcjami konfiguracji, dzięki którym ST2 + Xeno jest niesamowitą kombinacją. Www.yeraze.com
Yeraze
5

Możesz użyć sftp, aby zamontować zdalny katalog na komputerze z lokalizacją, a następnie po prostu otworzyć pliki przy użyciu Sublime text w normalny sposób.

Aby zamontować katalog zdalny za pomocą sftp, wpisz następujące polecenie w menedżerze plików systemu Linux;

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

Może wydawać się powolny w zależności od prędkości Internetu. Ale to zadziałało dla mnie.

David Okwii
źródło
5

Wiem, że to już dawno, ale mam naprawdę fajny sposób na zrobienie tego, co warto udostępnić.

Co jest wymagane w Conemu i WinSCP . To są proste instrukcje

  1. Otwórz program WinSCP.exe i zaloguj się na wybranym serwerze zdalnym (
    stwierdziłem, że ważne jest zalogowanie się przed dołączeniem ...).

  2. W preferencjach dla WinSCP - dwa ustawienia do zmiany. Wybierz interfejs typu Explorer, a nie Commander - aby nie widzieć plików lokalnych. Chyba że chcesz (ale wydaje się, że byłoby to do bani tutaj). Ustaw Sublime jako domyślny edytor.

  3. Po otwarciu ConEmu kliknij pasek kart prawym przyciskiem myszy i wybierz opcję Attach to.... Zostanie otwarte okno dialogowe z uruchomionymi aplikacjami. Wybierz, WinSCP i wybierz OK. ConEmu będzie teraz miał otwartą kartę z WinSCP wyświetlającą twoje zdalne pliki.

  4. Kliknij prawym przyciskiem myszy kartę WinSCP i wybierz New console.... Po otwarciu okna dialogowego wprowadź ścieżkę do pliku Sublime wykonywalnego w systemie. Przed naciśnięciem Startw polu z napisem New console splitwybierz przycisk opcji to righti ustaw procent. Zwykle wybieram 75%, ale możesz to dostosować do własnych upodobań i można to później zmienić.

    1. Teraz zobaczysz Sublime w tym samym oknie uruchomionym po prawej stronie WinSCP. W Sublime, z menu Widok wybierz Sidebar->Hide Sidebar, i bam, masz teraz zdalne pliki w dokładnie taki sam sposób, jak lokalnie - z kilkoma zastrzeżeniami, które oczywiście dotyczą edycji czegokolwiek zdalnie. WinSCP jest jednak błyskawicznie szybki.

Mam dwa monitory - przeglądarka Chrome na lewym monitorze, edytor kodu na prawym monitorze. Poza ConEmutym tworzę kolejną zakładkę i ssh w witrynie, nad którą pracuję, dzięki czemu mogę wykonywać takie czynności, jak uruchamianie gulplub gruntzdalnie, a także manipulowanie plikami z wiersza polecenia. Poważnie przyspieszyłem rozwój.

Oto zrzut ekranu:

Zrzut ekranu instalacji

dgo
źródło
5

Jest to najprostszy sposób na lokalną edycję plików znajdujących się na zdalnym hoście, na którym wcześniej ustawiłeś ssh na zdalny adres 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

Gotowe !!!

Teraz na hoście lokalnym po prostu rozpocznij edycję plików ... kiedy wyświetlasz katalog dir lokalnie, może nie wyświetlać niczego, dopóki nie przejdziesz do subdiru lub nie wyświetlisz konkretnego pliku ... leniwe ładowanie ... nie ma to wpływu na edycję plików

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

więc powyżej tak naprawdę edytuje zdalny plik o

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

W przypadku systemu OSX lub Windows zapoznaj się z tym poradnikiem od Digital Ocean

Scott Stensland
źródło
4

Innym rozwiązaniem Mac podobnym do osxfuse jest po prostu użycie klienta Transmit FTP z Panic Software, który pozwala zamontować zdalny folder jako dysk lokalny. Obsługuje SFTP, który jest bardzo bezpieczny.

Gavster
źródło
Bardzo podoba mi się ta opcja. Montaż powinien umożliwić otwarcie całego dysku jako wysublimowanego projektu.
Mic Fok
3

Pracowałem nad projektem o nazwie GiySync . Nadal wymaga trochę pracy, ale jest to oprogramowanie typu open source i używam go codziennie od kilku lat. Pracuję również nad natywną wersją systemu OS X, którą nazwałem GitSyncApp

Obecnie jest to tylko OS X, ale powinno być łatwo dodać obsługę Linuksa, a być może także Windowsa.

Działa poprzez obserwowanie zdarzeń systemu plików i używa git do synchronizowania folderu projektu na komputerze lokalnym a serwerem.

Wypróbowałem inne rozwiązania, takie jak bezpiecznik osx, Expand Drive, Transmit, kilka rozwiązań wykorzystujących rsync itp. Wszystkie one działają „OK” w przypadku małych projektów, ale jeśli pracujesz z dużą ilością kodu, nie działały one dla mnie.

Wiele opcji systemu plików wykonuje buforowanie w celu zwiększenia wydajności, co jest w porządku, dopóki tak nie jest. Na przykład, jeśli pracujesz z innymi ludźmi i ktoś inny zmienia pliki na serwerze.

Miałem też problemy, gdybym był w niestabilnej lub wolnej sieci, w której kończyłyby się puste pliki. Lub plik, który nie został zsynchronizowany, wtedy buforowanie stało się dziwne; mam nadzieję, że niedawno popełniłeś. Użycie git rozwiązuje ten problem, ponieważ sprawdza integralność każdego zatwierdzenia.

Dwie dodatkowe funkcje:

  1. Z każdym zapisem kończy się zatwierdzenie. Nie jest to bardzo przydatne, ale jeśli kiedykolwiek będziesz musiał cofnąć się w czasie, możesz.
  2. Działa z dowolnym edytorem tekstu.
Jachin
źródło
0

W zależności od konkretnych potrzeb możesz rozważyć użycie BitTorrent Sync. Utwórz folder współdzielony na komputerze domowym i roboczym. Edytuj pliki na komputerze domowym (za pomocą Sublime lub cokolwiek chcesz), a zostaną one zsynchronizowane automatycznie po zapisaniu. BitTorrent Sync nie polega na centralnym serwerze przechowującym pliki (a la Dropbox i tym podobne), więc teoretycznie powinieneś unikać wszelkich problemów z powodu przechowywania przez firmę zewnętrzną poufnych informacji.

thedudeabides
źródło
0

Rozwiązanie, które działało świetnie dla mnie - edytuj lokalnie na komputerze Mac i automatycznie zsynchronizuj plik ze zdalnym komputerem

  1. Upewnij się, że masz zdalne logowanie do zdalnego komputera. Jeśli nie, wykonaj następujące kroki http://osxdaily.com/2012/05/25/how-to-set-up-a-password-less-ssh-login/

  2. utwórz plik w ~ / Library / LaunchAgents / filesynchronizer.plist, o następującej treści:

    <?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. W oknie terminala uruchom

    launchctl load ~/Library/LaunchAgents/filesynchronizer.plist

  4. Otóż ​​to. Wszelkie zmiany dowolnych plików w ~ / SyncDirectory zostaną zsynchronizowane z ~ / SyncDirectory na komputerze zdalnym. Zmiany lokalne zastąpią wszelkie zmiany zdalne.

Spowoduje to utworzenie uruchomionego zadania, które monitoruje SyncDirectory, a gdy tylko coś się zmieni, uruchamia rsync, aby zsynchronizować katalog ze zdalnym komputerem.

Ran Locar
źródło
Czy to synchronizacja dwukierunkowa?
ugryziony
Nie; Tylko komputer lokalny do zdalnego
Ran Locar
0

lsyncd wydaje się być dobrą alternatywą dla podejścia sshfs. Jeśli użyjesz „-delay 0”, działa to w czasie rzeczywistym.

JLarky
źródło
0

Użyj FileZilla

Dotyczy to użytkowników komputerów Mac i Windows (używam na komputerach Mac). Przez lata korzystałem z kilku wymienionych odpowiedzi i odkryłem, że FileZilla odpowiada moim potrzebom podczas edycji plików na zdalnym hoście, do którego mam dostęp SSH. Jest również szybki w konfiguracji.

  • Konfiguruję nowe połączenie z serwerem
  • połączyć się z serwerem
  • kliknij prawym przyciskiem myszy plik, który chcesz edytować i wybierz View/Edit.

Spowoduje to wyświetlenie mojego domyślnego edytora (Sublime), ale będzie działać z każdym zainstalowanym edytorem.

  • Po zapisaniu pliku Filezilla automatycznie pyta mnie, czy chcę „Prześlij ten plik z powrotem na serwer”, klikam „Tak”, a następnie jest on aktualizowany.
Ben Havilland
źródło