Salah satu alasan utama saya menggunakan Emacs adalah untuk mendapatkan lingkungan yang kuat setelah ssh
masuk ke mesin jarak jauh. Hal pertama yang saya lakukan setelah memulai Emacs adalah menjalankan M-x shell
untuk mendapatkan baris perintah. Karena memerlukan sedikit waktu untuk Emacs untuk memulai, akan sangat mudah untuk memiliki opsi untuk meminta Emacs untuk memulai sebuah shell ketika saya menjalankannya, setelah mem-parsing file inisialisasi saya (saya memiliki beberapa kait shell yang diatur untuk melakukan satu hal dan yang lain ). Idealnya saya ingin dapat menjalankannya dengan opsi tambahan sehingga saya tidak perlu menambahkan sesuatu yang spesifik untuk file inisialisasi saya pada mesin jarak jauh (saya bisa mengatur bash
alias jika saya mau). Sesuatu seperti ini:
emacs afile1 afile2 -startShell
Bahkan, mengingat bahwa membuat sambungan aman memerlukan waktu sekitar 30 detik, yang ingin saya lakukan adalah membangun "mulai shell" ke dalam ssh
perintah itu sendiri, menggunakan ssh
dengan -t
untuk memulai program berbasis layar .
ssh -t me@remote emacs afile1 afile2 -startShell
Saya melihat dokumentasi argumen baris perintah untuk Emacs tapi saya masih memulai pada Emacs dan Lisp dan kustomisasi dan tidak segera jelas bagaimana melanjutkan untuk berurusan dengan argumen baris perintah. Bagaimana saya bisa melakukan ini?
( Pertanyaan terkait yangeshell
disebutkan oleh pengguna @Nama.)
ssh -t me@remote 'emacs -f shell'
bekerja seperti mimpi.Jawaban:
Anda dapat menggunakan sakelar -f untuk memanggil fungsi emacs dari baris perintah.
Komentar menunjukkan bagaimana melakukan ini lebih dari ssh menggunakan -t dan itu adalah satu cara. Namun, itu memang memiliki beberapa kelemahan. Yang utama adalah bahwa Anda menjalankan emacs dari jarak jauh, yang berarti Anda harus memiliki semua konfigurasi emacs Anda pada sistem jarak jauh serta memelihara beberapa secara lokal untuk versi lokal Anda. Anda juga kehilangan fleksibilitas jika ingin melakukan hal-hal secara lokal dan jarak jauh dan mungkin bergerak di antaranya.
Alternatifnya adalah menjalankan emacs Anda secara lokal dan memulai shell dari baris perintah dan kemudian ssh dari shell itu. Anda dapat menggunakan tramp ssh untuk mengedit file dll dan kemudian menggunakan shell untuk menjalankan sesi ssh interaktif.
Setelah Anda merasa nyaman dengan itu, Anda dapat melihat beberapa paket ssh terkait di luar sana untuk emacs. Maka harus dimungkinkan untuk memanggil fungsi dari salah satu paket dari baris perintah untuk mengotomatisasi pembuatan sesi ssh. Anda mungkin perlu menulis fungsi pembungkus sederhana untuk membuatnya lebih mudah. Maka Anda hanya akan memiliki 1 konfigurasi emacs untuk dikelola dan Anda mendapatkan fleksibilitas tambahan.
sumber
ssh -t ... 'emacs -f shell'
langsung dari terminal adalah bahwa saya harus tetap memperbarui, konfigurasi emacs jarak jauh. Saya telah bermain-main dengan gelandangan, dan sekarang saya telah mengurangi waktu startup ke tingkat yang dapat diterima dengan berbagi koneksi ssh itu dapat digunakan dan sangat membantu, misalnya,scp
penyelesaian nama file jarak jauh. Namun itu masih bukan solusi mulus untuk berjalan dalam satu sesi, dan kerugiannya saat ini lebih besar daripada keuntungannya.ssh
prompt menampilkan buruk dengan beberapa^
karakter awalan. Hari ini saya mencoba lagi dan mengedit file tanpa cacat, tetapi prompt masih kacau. Kecurigaan saya adalah bahwa tidak semuanya akan mulus. Misalnya menjalankanag
memulai proses pada mesin jarak jauh tetapi saya kurang beruntung melakukanrgrep
. Sepertinya ini layak untuk dilihat lagi ( github.com/ieure/ssh-el di melpa terlihat menarik) ketika saya punya waktu - dan memposting kembali qs apa pun ke situs ini; terima kasih sudah menaikkannya.