Bagaimana cara mengganti keybindings untuk `term`

8

Untuk beberapa tugas seperti menggunakan ruby prydan tmuxkeduanya eshelldan shelltidak berperilaku baik. Saya mencoba menggunakan term, tetapi ketidakbersalahan saya untuk mengesampingkan keybindings termmembuat penggunaannya mengganggu.

Bagaimana saya bisa mengatur, mengatakan, M-osebagai other-windowdan M-ksebagai kill-bufferketika menggunakan term?

Renan Ranelli
sumber
5
Pengikat kunci saya berfungsi termtetapi hanya dalam mode garis C-c C-j. Saya hanya mengaktifkan mode char C-c C-kbila perlu.
Vamsi
Saya tidak tahu tentang C-c C-jdan C-c C-k! Terima kasih!
Renan Ranelli

Jawaban:

6

mungkin menggunakan ansi-termsebagai gantinya akan sedikit kurang mengganggu, karena memperlihatkan C-xawalan, memungkinkan Anda untuk menggunakan, mengatakan, C-x oatau C-x ktanpa trik khusus.

Jika itu tidak cukup, Anda dapat menggunakan pendekatan berikut:

(defun expose-global-binding-in-term (binding)
   (define-key term-raw-map binding 
     (lookup-key (current-global-map) binding)))

(expose-global-binding-in-term (kbd "M-o"))
(expose-global-binding-in-term (kbd "M-k"))
...
Sigma
sumber
5

Dalam term-mode, C-x whateverpengikatan kunci biasa menjadi C-c whateversebaliknya. Atas perkenan Josh Matthews

Sekarang untuk menentukan ikatan kunci yang hanya akan aktif dalam mode istilah, coba ini:

(add-hook 'term-mode-hook
  (lambda () 
    (define-key term-raw-map (kbd "M-J") 'other-window)
    (define-key term-raw-map (kbd "M-k") 'kill-buffer)))
Nsukami _
sumber
Bagus, itu menyelesaikan masalah saya. Saya menerima jawaban @ Sigma karena sedikit lebih mudah untuk dikonfigurasikan (tidak perlu menduplikasi binding global-map saya dalam term-raw-map). Terima kasih!
Renan Ranelli
1
@LeMeteore memasukkan panggilan-panggilan term-mode-hookini sangat mungkin tidak berguna: Anda akan menginstal ulang kunci-kunci itu setiap kali mode ini diaktifkan, alih-alih melakukannya hanya sekali.
Sigma
@ Sigma Anda benar. Saya sebenarnya berusaha mencari solusi dengan cepat. Jawaban Anda memang lebih nyaman.
Nsukami _