Cách ghi đè các liên kết phím cho `term`


8

Đối với một số nhiệm vụ như sử dụng ruby prytmuxcả hai eshellshellkhông cư xử tốt. Tôi đã cố gắng sử dụng term, nhưng sự vô tư của tôi để ghi đè lên các phím bấm termkhiến cho việc sử dụng nó trở nên khó chịu.

Làm thế nào tôi có thể thiết lập, nói, M-onhư other-windowM-knhư kill-bufferkhi sử dụng term?


5
Keybindings của tôi hoạt động trong termnhưng chỉ trong chế độ dòng C-c C-j. Tôi chỉ chuyển chế độ char C-c C-kbất cứ khi nào cần thiết.
Vamsi

Tôi đã không biết về C-c C-jC-c C-k! Cảm ơn!
Renan Ranelli

Câu trả lời:


6

có thể sử dụng ansi-termthay thế sẽ ít gây phiền nhiễu hơn, vì nó phơi bày một C-xtiền tố, cho phép bạn sử dụng, nói C-x ohoặc C-x kkhông có bất kỳ thủ thuật đặc biệt nào.

Nếu điều đó là không đủ, bạn có thể sử dụng phương pháp sau:

(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"))
...

5

Trong chế độ hạn, thay vào đó , mọi thao tác C-x whateverbấm phím thông thường sẽ trở thành C-c whatever. Phép lịch sự của Josh Matthews

Bây giờ để xác định các phím bấm sẽ chỉ hoạt động trong chế độ hạn, hãy thử điều này:

(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)))

Đẹp, nó giải quyết vấn đề của tôi. Tôi chấp nhận câu trả lời của @ Sigma vì việc định cấu hình thuận tiện hơn một chút (không cần sao chép các ràng buộc bản đồ toàn cầu của tôi trong thuật ngữ bản đồ thô). Cảm ơn bạn!
Renan Ranelli

1
@LeMeteore đưa các cuộc gọi này vào term-mode-hookrất có thể không hữu ích: cuối cùng bạn sẽ cài đặt lại các phím đó mỗi khi chế độ được kích hoạt, thay vì chỉ thực hiện một lần.
Sigma

@Sigma bạn nói đúng. Tôi thực tế đã cố gắng nhanh chóng tìm ra giải pháp. Câu trả lời của bạn thực sự thuận tiện hơn.
Nsukami _
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.