Cara menggunakan Sublime over SSH

237

Saya mencoba menggunakan Sublime Text 2 sebagai editor ketika saya SSH masuk ke server pekerjaan saya, dan saya bingung. Saya menemukan ini http://urbangiraffe.com/2011/08/13/remote-editing-with-sublime-text-2/ (di antara banyak posting lainnya) yang sepertinya membantu, tapi saya tidak mengikutinya dengan tepat , khususnya dengan nilai apa yang harus saya masukkan untuk variabel jarak jauh di baris 5. Saya menetapkan "/ Users / path / ke / local / copy" ke direktori root lokal saya, tetapi saya tidak tahu apakah itu benar atau jika ada lebih banyak melakukan. Adakah pikiran? Saya menggunakan OSX10.8

pencuri jempol
sumber
12
Saya merasa lebih mudah menggunakan osxfusedansshfs pada mac saya untuk me-mount direktori remote secara lokal dan kemudian mengedit melalui ST2.
AGS
Ada plugin ST2 populer untuk sftp. Berikut adalah penjelasan lebih lanjut tentang sistem yang saya percaya AGS merujuk: superuser.com/questions/134140/… . Saya punya masalah dengan auto-load saat masuk, dan harus menggunakan skrip masuk solusi yang dibuat dengan Platypus. Saya juga membutuhkan versi yang lebih baik dari macfuse - Saya akan melihat apakah saya dapat menemukan tautannya jika Anda tertarik.
hukum
Dengan Snow Leopard (10.6.8), saya membutuhkan inti yang diperbarui untuk MacFuse (yaitu, macfuse-core-10.5-2.1.9.dmg) - di sini adalah tautan ke tempat saya mendapatkannya: blog.urbaninsight.com/2011 / 04/18 / ... Jika Anda tertarik, itu akan menyelamatkan Anda dari banyak sakit kepala.
lawlist
Itu tidak akan langsung, dan mungkin kurang cocok untuk menonton file log dan barang-barang, tetapi sering mengatur gitolite bisa sia-sia. Cukup git pull dan Anda memiliki semua yang bisa dimainkan. Kemudian lagi banyak orang memiliki internet cepat hari ini dan tidak akan merasakan lag netwok ... Itu semua tergantung pada pengaturan Anda.

Jawaban:

161

Ada tiga cara:

Juga, secara teori, Anda dapat menginstal X11 pada server jauh dan menjalankan Sublime di sana melalui VNC atau penerusan X11, tetapi tidak ada gunanya melakukan ini.

Mikko Ohtamaa
sumber
1
Lihat juga terkait pertanyaan superuser.com
Mikko Ohtamaa
11
Kombo SSHFS / osxfuse bekerja untuk saya! Terima kasih. Bagi orang lain dengan masalah ini: github.com/osxfuse/osxfuse/wiki/SSHFS
thumbtackthief
bisakah seseorang dengan plugin sftp menggunakan alat-alat seperti kerang interaktif dan ganti seperti di emacs?
Edmondo1984
@ Edmondo1984 hanya menggunakan terminal sungguhan untuk itu
Mikko Ohtamaa
1
Sublime SFTP sebenarnya memungkinkan Anda untuk mengedit file dari jarak jauh tetapi tanpa panel proyek ST (jadi tidak ada Go to Anywhere ), atau melakukan sesuatu seperti rsync. Ada uji coba gratis untuk mengujinya.
Wernight
102

Anda dapat menggunakan rsub , yang terinspirasi dari TextMate rmate. Dari uraian:

Rsub adalah implementasi dari fitur 'rmate' dari TextMate 2 untuk Sublime Text 2, yang memungkinkan file untuk diedit pada server jarak jauh menggunakan penerusan / penerowongan port SSH.

Berikut tutorial yang bagus tentang cara mengaturnya dengan benar.

ubik
sumber
2
Saya juga setuju bahwa membuat rsub untuk bekerja adalah mudah, dan memungkinkan sudo, yang bagus. Saya mengalami beberapa masalah agar berfungsi dengan benar, tetapi SO juga memiliki jawabannya: stackoverflow.com/questions/18938950/…
Ross R
7
tandai jawaban ini alih-alih yang pertama karena ini gratis
theodore
Panduan ini bekerja dengan sempurna, bahkan untuk terminal noob total seperti saya. Terima kasih!
Henrik
66

Saya menggunakan Windows dan telah menggunakan 4 metode: SFTP , WinSCP , Unison dan Sublime Text di Linux dengan X11 meneruskan SSH ke Windows (ya Anda dapat melakukan ini tanpa konfigurasi yang berantakan dan menggunakan alat gratis).

Cara keempat adalah yang terbaik jika Anda dapat menginstal perangkat lunak pada mesin Linux Anda.

Cara keempat:

MobaXterm

  1. Instal MobaXterm di Windows
  2. SSH ke kotak Linux Anda dari MobaXterm
  3. Di kotak linux Anda, instal Sublime Text 3. Ini caranya di Ubuntu
  4. Pada prompt perintah, mulai luhur dengan subl
  5. Itu dia! Anda sekarang memiliki teks luhur yang berjalan di Linux, tetapi dengan jendelanya yang berjalan di desktop Windows Anda. Ini dimungkinkan karena MobaXterm menangani penerusan X11 melalui SSH untuk Anda sehingga Anda tidak perlu melakukan apa pun yang funky untuk menjalankannya. Mungkin ada sedikit keterlambatan, tetapi file Anda tidak akan pernah tidak sinkron, karena Anda mengeditnya langsung di mesin Linux.

Catatan: Saat memanggil subl jika komplain untuk perpustakaan tertentu - pastikan Anda menginstalnya untuk memanggil sublimetext dari mobaxterm dengan sukses.

Jika Anda tidak dapat menginstal perangkat lunak pada kotak Linux Anda, yang terbaik adalah Serentak. Mengapa?

  • Gratis
  • Itu cepat
  • Ini dapat diandalkan dan tidak peduli editor mana yang Anda gunakan
  • Anda dapat membuat daftar abaikan khusus

SFTP

Pengaturan: Instal paket SFTP Sublime Text. Paket ini membutuhkan lisensi.

  1. Buat folder baru
  2. Buka sebagai Proyek Teks Sublime.
  3. Di bilah sisi, klik kanan pada folder dan pilih Map Remote.
  4. Edit file sftp-config.json
  5. Klik kanan folder pada langkah 1 pilih unduhan.
  6. Bekerja secara lokal.

Di sftp-config, saya biasanya mengatur:

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

Ini, selain terminal SSH ke mesin memberi saya pengalaman mengedit jarak jauh yang cukup mulus.

WinSCP

  1. Instal dan jalankan WinSCP
  2. Buka Preferensi (Ctrl + Alt + P) dan klik Transfer, lalu pada Tambah. Beri nama preset.
  3. Setel mode transfer ke biner (Anda tidak ingin konversi baris)
  4. Setel modifikasi file ke "Tidak ada perubahan"
  5. Klik tombol Edit di sebelah File Mask dan atur sertakan Anda dan kecualikan file dan folder (berguna untuk saat Anda memiliki folder .git / .svn hadir atau Anda ingin mengecualikan produk bangunan agar tidak disinkronkan).
  6. Klik OK
  7. Sambungkan ke server jarak jauh Anda dan navigasikan ke folder yang diinginkan
  8. Pilih folder kosong di mesin lokal Anda.
  9. Pilih preset pengaturan Transfer yang baru dibuat.
  10. Terakhir, tekan Ctrl + U (Perintah> Tetap perbarui direktori jauh) dan pastikan "Sinkronkan saat mulai" dan "Perbarui subdirektori" dicentang.

Sejak saat itu, WinSCP akan menjaga perubahan Anda disinkronkan.

Bekerja di folder lokal menggunakan SublimeText. Pastikan saja Sublime Text diatur untuk menebak akhir baris dari file yang sedang diedit.

Serentak

Saya telah menemukan bahwa jika source tree sangat besar (sekitar beberapa ratus MB dengan hierarki yang dalam), maka metode WinSCP yang dijelaskan di atas mungkin agak lambat. Anda bisa mendapatkan kinerja yang jauh lebih baik menggunakan Unison . Sisi buruknya adalah bahwa Unison tidak otomatis (Anda perlu memicunya dengan penekanan tombol) dan memerlukan komponen server untuk dapat berjalan di mesin linux Anda. Sisi baiknya adalah transfernya sangat cepat, sangat dapat diandalkan, dan mengabaikan file, folder, dan ekstensi sangat mudah diatur.

Carl
sumber
+1 untuk SFTP setuptautan. Saya tidak tahu apakah SFTP adalah perangkat lunak Windows atau paket Sublime.
Kevin Meredith
Saya menggunakan sftp untuk ST2, Putty, dan sedikit FileZilla untuk ukuran yang baik. Ini pengaturan terbaik yang saya temukan setelah mencoba banyak. Saya, bagaimanapun, tidak suka harus menyimpan fileset lokal. Saya lebih suka ST daripada editor terminal liek vi atau nano - membuat ST3 di server itu sendiri terdengar seperti kesepakatan yang manis. thx untuk tip -
Bosworth99
Jika Anda seorang Cyberduck ( cyberduck.io/?l=en ) pengguna, terintegrasi sublimetext sangat baik.
sakurashinken
33

Sebagai tindak lanjut dari jawaban @ ubik, berikut adalah tiga langkah sederhana (satu kali) untuk menjalankan perintah 'subl' di server jauh Anda:

  1. [ Lokal ] Instal rsubpaket dalam Teks Sublime menggunakan Manajer Paket Sublime
  2. [ Lokal ] Jalankan perintah Bash berikut (ini akan membuat terowongan SSH , yang merupakan saus rahasia rsub):

    printf "Host *\n    RemoteForward 52698 127.0.0.1:52698" >> ~/.ssh/config
  3. [ Server ] Jalankan perintah Bash berikut di server jauh Anda (ini akan menginstal perintah shell 'subl'):

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

Dan voila! Anda sekarang menggunakan Teks Luhur melalui SSH.

Anda dapat membuka contoh file dalam Sublime Text dari server dengan sesuatu seperti subl ~/test.txt

pengguna456584
sumber
1
Saya terus mendapatkan: /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. Pikiran?
thumbtackthief
1
Ya: tambahkan -R 52698: localhost: 52698 ke perintah ssh Anda. Lihat di sini: stackoverflow.com/questions/18938950/…
Ross R
Tip noob yang menurut saya berguna: Ingatlah agar Sublime berjalan di mesin lokal Anda. Itu benar-benar memulai server.
Magne
@RossR - ini tidak berhasil. Saya terlihat seperti ini: "RemoteForward 52.698 127.0.0.1:52698 -R 52.698: localhost: 52.698" dan masih output kesalahan yang sama: "Tidak dapat terhubung ke Textmate di localhost: 52.698"
FooBar
1
di atas berfungsi, Anda hanya perlu me-restart server jauh sesudahnya atau Anda akan terus mendapatkan koneksi ditolak kesalahan.
ctf0
10

Saya menggunakan MacOS, dan cara paling nyaman bagi saya adalah menggunakan CyberDuck , yang gratis (juga tersedia untuk Windows). Anda dapat terhubung ke sistem file SSH jarak jauh Anda dan mengedit file Anda menggunakan editor lokal Anda. Apa yang dilakukan CyberDuck adalah mengunduh file ke tempat sementara di OS lokal Anda dan membukanya dengan editor Anda. Setelah Anda menyimpan file, CyberDuck secara otomatis mengunggahnya ke sistem jarak jauh Anda. Tampaknya transparan seolah-olah Anda mengedit file jarak jauh menggunakan editor lokal Anda. Para pengembang Cyberduck juga membuat MountainDuck untuk memasang sistem file jarak jauh.

bizi
sumber
1
saya terbalik, meskipun ini tidak bekerja dengan sudo ... (file yang membutuhkan akses superuser untuk menulis)
Tiago Coelho
1
Datang untuk memposting solusi tepat ini. Selama Anda menggunakan CyberDuck, itu sangat nyaman. Namun perlu diingat bahwa itu hanya berfungsi saat CyberDuck berjalan. Anda juga dapat menggunakan metode yang sama untuk membuka file di editor lain tetapi saya telah menemukan bahwa tidak semua dari mereka akan bekerja dengan andal dan mungkin kehilangan koneksi atau secara diam-diam beralih ke penyimpanan secara lokal alih-alih dari jarak jauh (misalnya Microsoft Excel). Namun, tidak pernah ada masalah dengan menggunakan Sublime ini.
user5359531
8

Anda dapat mencoba sesuatu yang telah saya kerjakan bernama ' xeno '. Ini akan memungkinkan Anda untuk membuka file / folder dalam Teks Sublime (atau editor lokal sebenarnya) melalui koneksi SSH dan secara otomatis menyinkronkan perubahan ke mesin jarak jauh. Ini seharusnya bekerja pada hampir semua sistem POSIX (saya sendiri menggunakannya dari OS X untuk terhubung ke mesin Linux dan mengedit file dalam Teks Sublime). Ini gratis dan open source. Saya ingin umpan balik.

Untuk informasi lebih lanjut: ini pada dasarnya adalah Git / SSH mashup yang ditulis dengan Python yang memungkinkan Anda untuk mengedit file dan folder pada mesin jarak jauh di editor lokal. Anda tidak perlu mengkonfigurasi modul kernel, Anda tidak perlu memiliki koneksi persisten, semuanya otomatis, dan itu tidak akan mengganggu kontrol sumber yang ada karena menggunakan repositori Git yang tidak berfungsi. Juga, karena dibangun di atas Git, itu sangat cepat dan mendukung penggabungan file secara otomatis yang mungkin berubah di kedua ujungnya, tidak seperti SSHFS / SFTP yang hanya akan menghancurkan semua file dengan cap waktu yang lebih lama.

malapetaka
sumber
Dan saya telah menulis beberapa posting blog sederhana dengan skrip dan opsi konfigurasi yang menjadikan ST2 + Xeno sebagai kombo yang luar biasa .. www.yeraze.com
Yeraze
5

Anda dapat menggunakan sftp untuk memasang direktori jarak jauh pada mesin lokasi Anda dan kemudian cukup buka file menggunakan teks Sublim seperti yang biasa Anda lakukan.

Untuk memasang direktori jarak jauh menggunakan sftp, masukkan berikut ini di manajer file Linux Anda;

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

Ini mungkin terlihat lambat tergantung pada kecepatan internet Anda. Tetapi ini berhasil bagi saya.

David Okwii
sumber
5

Saya tahu ini sudah sangat tua, tetapi saya memiliki cara yang sangat keren untuk melakukan hal ini dan layak untuk dibagikan.

Apa yang diperlukan di Conemu dan WinSCP . Ini adalah instruksi sederhana

  1. Buka WinSCP.exe dan login ke server jarak jauh yang saya inginkan (saya
    menemukan bahwa penting untuk login sebelum memasang ...).

  2. Dalam preferensi untuk WinSCP - dua pengaturan berubah. Pilih jenis antarmuka Explorer dan bukan Commander - sehingga Anda tidak melihat file lokal. Kecuali Anda mau (tapi itu sepertinya akan payah di sini). Atur Sublime sebagai editor default Anda.

  3. Dengan ConEmu terbuka, klik kanan bilah tab dan pilih opsi Attach to.... Kotak dialog akan terbuka dengan aplikasi Anda yang sedang berjalan. Pilih, WinSCP dan pilih OK. ConEmu sekarang akan memiliki tab terbuka dengan WinSCP menampilkan file jarak jauh Anda.

  4. Klik kanan pada tab WinSCP dan pilih New console.... Ketika kotak dialog terbuka, masukkan path ke Sublime yang dapat dieksekusi pada sistem Anda. Sebelum Anda menekan Start, Di kotak yang mengatakan New console splitpilih tombol radio to rightdan atur persentase. Saya biasanya memilih 75%, tetapi Anda dapat menyesuaikan ini sesuai dengan keinginan Anda, dan itu bisa diubah kemudian.

    1. Sekarang Anda akan melihat Sublim di jendela yang sama berjalan di sebelah kanan WinSCP. Di Sublime, dari menu View, pilih Sidebar->Hide Sidebar, dan bam, Anda sekarang memiliki file jarak jauh dengan cara yang persis sama seperti yang Anda lakukan secara lokal - dengan beberapa peringatan tentu saja yang disertai dengan pengeditan apa pun dari jarak jauh. WinSCP ringan meskipun.

Saya memiliki dua monitor - browser Chrome layar monitor kiri, monitor kanan menampilkan editor kode. Juga di ConEmu, saya membuat tab lain dan ssh ke situs yang saya kerjakan, jadi saya bisa melakukan hal-hal seperti menjalankan gulpatau gruntjarak jauh dan juga memanipulasi file dari baris perintah. Serius mempercepat pembangunan.

Berikut screenshotnya:

Siapkan Screenshot

dgo
sumber
5

Ini adalah cara termudah untuk mengedit file secara lokal yang hidup pada host jarak jauh di mana Anda sebelumnya telah mengatur ssh ke IP jarak jauh

# 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

Selesai !!!

Sekarang pada host lokal baru mulai mengedit file ... ketika Anda daftar dir secara lokal itu mungkin tidak daftar apa pun sampai Anda cd ke subdir atau daftar file tertentu ... lazy loading ... ini tidak berdampak mengedit file

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

jadi di atas sebenarnya mengedit file jarak jauh di

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

Untuk OSX atau Windows, lihat tut ini dari yang sejenis di Digital Ocean

Scott Stensland
sumber
4

Solusi mac lain yang mirip dengan osxfuse adalah dengan menggunakan Transmit FTP client dari Panic Software, yang memungkinkan Anda untuk memasang folder jauh sebagai disk lokal. Ini mendukung SFTP, yang sangat aman.

Gavster
sumber
Saya suka opsi ini. Mounting akan memungkinkan Anda membuka seluruh drive sebagai proyek luhur.
Mic Fok
3

Saya telah mengerjakan proyek bernama GiySync . Masih perlu beberapa pekerjaan, tapi ini open source dan saya sudah menggunakannya setiap hari selama beberapa tahun. Saya juga sedang mengerjakan versi OS X asli yang saya sebut GitSyncApp

Saat ini hanya OS X tetapi harus mudah untuk menambahkan dukungan untuk Linux, dan mungkin juga Windows.

Ini bekerja dengan menonton peristiwa sistem file dan digunakan untuk git untuk menyinkronkan folder proyek pada mesin lokal Anda dan server.

Saya mencoba solusi lain seperti osx fuse, Expand Drive, Transmit, beberapa solusi yang menggunakan rsync, dll. Semuanya bekerja 'OK' untuk proyek-proyek kecil, tetapi jika Anda bekerja dengan banyak kode mereka tidak bekerja untuk saya.

Banyak opsi sistem file melakukan caching untuk meningkatkan kinerja, yang baik-baik saja, sampai tidak. Seperti jika Anda bekerja dengan orang lain dan orang lain mengubah file di server.

Saya juga mengalami masalah jika saya berada di jaringan yang rapuh atau lambat di mana saya akan berakhir dengan file kosong. Atau file yang tidak disinkronkan, maka caching menjadi aneh; semoga Anda berkomitmen baru-baru ini. Menggunakan git memecahkan masalah ini karena memeriksa integritas setiap komit.

Dua fitur bonus:

  1. Anda berakhir dengan komit untuk setiap penyimpanan. Ini tidak sangat berguna tetapi jika Anda harus kembali ke masa lalu Anda bisa.
  2. Ini berfungsi dengan editor teks apa pun.
Jachin
sumber
0

Tergantung pada kebutuhan Anda yang sebenarnya, Anda dapat mempertimbangkan menggunakan BitTorrent Sync. Buat folder bersama di PC rumah Anda dan PC kantor Anda. Edit file pada PC rumah Anda (menggunakan Sublime atau apa pun yang Anda suka), dan mereka akan menyinkronkan secara otomatis saat Anda menyimpan. BitTorrent Sync tidak bergantung pada server pusat yang menyimpan file (ala Dropbox dan sejenisnya), jadi Anda secara teori harus jelas dari masalah apa pun karena pihak ketiga menyimpan info sensitif.

thedudeabides
sumber
0

Sebuah solusi yang bekerja sangat baik untuk saya - mengedit secara lokal di Mac, dan memiliki file secara otomatis disinkronkan ke mesin jarak jauh

  1. Pastikan Anda memiliki login tanpa kata sandi ke mesin jarak jauh. Jika tidak, ikuti langkah-langkah ini http://osxdaily.com/2012/05/25/how-to-set-up-a-password-less-ssh-login/

  2. buat file di ~ / Library / LaunchAgents / filesynchronizer.plist, dengan konten berikut:

    <?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. Di jendela terminal, jalankan

    launchctl load ~/Library/LaunchAgents/filesynchronizer.plist

  4. Itu dia. Setiap perubahan pada file apa pun di ~ / SyncDirectory akan disinkronkan ke ~ / SyncDirectory pada mesin jarak jauh. Perubahan lokal akan menggantikan perubahan jarak jauh apa pun.

Ini menciptakan pekerjaan launchd yang memantau SyncDirectory, dan setiap kali ada perubahan, jalankan rsync untuk menyinkronkan direktori ke mesin jarak jauh.

Ran Locar
sumber
Apakah ini sinkronisasi dua arah?
digigit
Tidak; Hanya mesin lokal ke jarak jauh
Ran Locar
0

lsyncd tampaknya menjadi alternatif yang bagus untuk pendekatan sshfs. Jika Anda menggunakan "-delay 0" itu berfungsi secara real-time.

JLarky
sumber
0

Gunakan FileZilla

Ini berlaku untuk pengguna Mac dan Windows (saya gunakan di Mac). Saya telah menggunakan beberapa jawaban yang terdaftar selama bertahun-tahun dan telah menemukan bahwa FileZilla sangat sesuai dengan kebutuhan saya ketika mengedit file pada host jarak jauh yang saya memiliki akses SSH. Pengaturannya juga cepat.

  • Saya mengkonfigurasi koneksi server baru
  • terhubung ke server
  • klik kanan pada file yang ingin saya edit dan pilih View/Edit.

Ini menampilkan editor default saya (Sublime) tetapi itu akan berfungsi dengan editor yang telah Anda instal.

  • Setelah saya menyimpan file, Filezilla secara otomatis meminta saya bertanya apakah saya ingin "Unggah file ini kembali ke server", saya klik "Ya" dan kemudian diperbarui.
Ben Havilland
sumber