Làm cách nào để liên kết <Control> <Arrowkey> trong Mutt?


9

Tôi bị kẹt ở đây:

Có thể liên kết một trong <enter>, <backspace>, <up>, <down>, <left>, <right>cùng với kiểm soát?

\C<foo>hiện lên như |foo>trong sự giúp đỡ và ^<up>không bị ràng buộc.
'\C<foo>, '\C <foo>'đừng làm việc nữa (cùng với "thay vào đó).

<control> không tồn tại.

Bạn thực sự có thể nhận được ^<foo>sự giúp đỡ, nhưng chỉ khi bạn lập bản đồ ^<foo>, đó không chính xác là những gì tôi muốn. ;)

Câu trả lời:


5

Trước tiên, bạn cần xác định xem thiết bị đầu cuối của bạn có gửi các chuỗi thoát khác nhau cho các tổ hợp phím này hay không. Các ứng dụng chạy trong thiết bị đầu cuối lấy ký tự làm đầu vào, không phải khóa. Các phím chức năng được mã hóa dưới dạng các ký tự điều khiển hoặc dưới dạng các chuỗi thoát bắt đầu bằng ký tự thoát (mà bạn có thể viết như \etrong một ràng buộc khóa).

Để xem chuỗi thoát được gửi bởi tổ hợp phím trong thiết bị đầu cuối, nhấn Ctrl+ Vtại dấu nhắc shell, sau đó nhấn tổ hợp phím. Ví dụ: nếu tôi nhấn Ctrl+ V Ctrl+ Lefttại dấu nhắc shell, tôi thấy ^[O5D. ^[là nhân vật thoát, vì vậy tôi sẽ cần liên kết \eO5Dtrong Mutt để khiến nó phản ứng với Ctrl+ Left:

bind editor \eO5D backward-word

Một số thiết bị đầu cuối gửi cùng một chuỗi thoát cho cùng một khóa với các bộ sửa đổi khác nhau. Nếu đó là trường hợp, bạn sẽ cần tìm ra cách thay đổi hành vi của thiết bị đầu cuối hoặc chuyển sang thiết bị đầu cuối khác.


Nghe có vẻ hay, nhưng nó không hoạt động. \elà chìa khóa thoát, không phải là ký tự thoát
Profpatsch

@Profpatsch Thật kỳ lạ, sự ràng buộc đó có hiệu quả đối với tôi. Tôi đã sử dụng Mutt 1.5 mãi mãi, có thể 1.4 hoạt động khác nhau? Nó có hoạt động không nếu bạn sử dụng \etrong macro : macro editor \e[O5D \eb?
Gilles 'SO- ngừng trở nên xấu xa'

1
Tôi đang ở Terminator, khi tôi đánh Ctrl+Downtôi nhận được ^[[1;5B, nó cũng không hoạt động bind index \e[1;5B commandvà cũng không hoạt động \e1;5B . Ồ, tôi làm việc với Mutt 1.5.21 (Arch .;)
Profpatsch

1
@Profpatsch Ok, tôi có thể sao chép này. Dường như có giới hạn 5 ký tự: bind editor \e[1\;5 backward-wordhoạt động đối với tôi (và chèn thêm Dkhi tôi nhập ESC [ 1 ; 5 D), nhưng bind editor \e[1\;5D backward-wordkết quả là ESC [ 1 ; 5 Dkhông làm gì cả. Tôi thấy giới hạn 8 ký tự trong mã nguồn ( MAX_SEQ), nhưng không có gì có thể kích hoạt ở 5 ký tự.
Gilles 'SO- ngừng trở nên xấu xa'

@Profpatsch Một cách giải quyết khác là làm cho thiết bị đầu cuối của bạn gửi các chuỗi ngắn hơn. Tôi không biết Terminator có hỗ trợ điều này không.
Gilles 'SO- ngừng trở nên xấu xa'

15

Tôi tìm thấy câu trả lời đúng ở đây :

Bên trong mutt, sử dụng lệnh

:exec what-key

Sau đó nhấn phím mong muốn (như Ctrl + mũi tên), bạn có thể tìm hiểu cách tham chiếu bất kỳ phím nào. Trong trường hợp của tôi, tôi nhận được <C-Up>Ctrl + Up.


4
Trong trường hợp bạn đã thành công trong việc sử dụng :exec what-keyđể có được thông tin này, nhưng sau đó không thể tìm ra "phím gì" để nhấn để thoát khỏi what-keylệnh, trình tự khóa cần thoát là Ctrl-g.
KDN

@KDN: Cảm ơn. Nó đã nhận được một chút lúng túng. ;)
Teekin

@KDN Ctrl-gđược sử dụng để hủy các lệnh trong emacs và nhiều shell unix.
Jangid
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.