Bagaimana cara memulai shell secara otomatis setelah memulai emacs

8

Salah satu alasan utama saya menggunakan Emacs adalah untuk mendapatkan lingkungan yang kuat setelah sshmasuk ke mesin jarak jauh. Hal pertama yang saya lakukan setelah memulai Emacs adalah menjalankan M-x shelluntuk 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 bashalias 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 sshperintah itu sendiri, menggunakan sshdengan -tuntuk 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.)

TooTone
sumber
Bisa :). ssh -t me@remote 'emacs -f shell'bekerja seperti mimpi.
TooTone
@Name, terima kasih, saya sudah mencobanya, tapi saya katakan Anda bisa menambahkan komentar Anda sebagai jawaban dan saya akan menerimanya karena itu mengatasi masalah saya. Atau mungkin pertanyaan saya harus ditandai sebagai duplikat. Sebaiknya jangan dibiarkan terbuka.
TooTone

Jawaban:

4

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.

emacs -f shell

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.

Tim X
sumber
1
Anda benar bahwa kelemahan utama menggunakan 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, scppenyelesaian nama file jarak jauh. Namun itu masih bukan solusi mulus untuk berjalan dalam satu sesi, dan kerugiannya saat ini lebih besar daripada keuntungannya.
TooTone
Opsi ssh lainnya yang dapat membantu termasuk mendapatkan tingkat kompresi ssh yang tepat. Apa ketidaknyamanan sesi tunggal yang Anda alami?
Tim X
Saya punya masalah kemarin di mana file yang saya buka hanya-baca, dan juga ketika saya melakukan sshprompt 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 menjalankan agmemulai proses pada mesin jarak jauh tetapi saya kurang beruntung melakukan rgrep. 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.
TooTone
Tergantung pada kasus penggunaan Anda, mendapatkan gelandangan yang tepat bisa menjadi tantangan, tetapi itu sepadan dengan usaha. Prompt yang berantakan terdengar seperti Anda mungkin memiliki karakter pelarian ansi-warna. Mungkin paket ansi-warna perlu dimuat. Juga, coba gunakan gelandangan tanpa konfigurasi apa pun - pengaturan default biasanya tepat. Tamp sangat kuat, tetapi terkadang rumit untuk dikonfigurasi.
Tim X