Cách liên kết C- [thực tế (nghiêm túc thực tế lần này)


11

Có cách nào để liên kết C-[với một cái gì đó và không có tất cả các M-ràng buộc (Meta) bị rối không?

Không phải lần đầu tiên câu hỏi này xuất hiện. Thật không may, giải pháp duy nhất được cung cấp trong luồng trước đó là a) Linux cụ thể, b) yêu cầu một công cụ bên ngoài (lại là Linux cụ thể) không liên quan gì đến Emacs. Trong cùng một suy nghĩ, tôi có thể đã sử dụng một cái gì đó như Karabiner trên OS X để đánh cắp C-[chuỗi trước khi Emacs có được nó nhưng điều này thật rắc rối và tốn kém.

Do đó, có Emacs mà khăng khăng dịch C-[để ESC, C-iđến TABvà có lẽ những người khác tôi sẽ rất giống để phá vỡ các mối quan hệ và nhận được chuỗi chìa khóa quý trở lại. Gần đây tôi chạy hết tốc lực vào vấn đề này và đổ lỗi cho chế độ smartparens ngây thơ yên tĩnh .

Một giải pháp khả thi có liên quan function-key-mapkey-translation-mapđã được thảo luận ở đây nhưng than ôi, nó không còn hoạt động hoặc không hoạt động ngay từ đầu (hoặc tôi đang làm gì đó sai). Tôi nghĩ rằng nó đã đi đúng hướng mặc dù.


3
Emacs không khăng khăng "dịch C-[sang ESC". Hai là như nhau . Tương tự, C-iTABlà các tên khác nhau cho cùng một mã kiểm soát ASCII.
vẽ

2
@Drew Không phải là ít rõ ràng nhất là các tổ hợp phím có điều khiển phải ánh xạ tới các mã điều khiển ASCII (trong đó chỉ có 32) trong một ứng dụng GUI. (Hoặc, quái, thậm chí trong xterm, trong đó có một chế độ modifyOtherKeys để gửi chuỗi thoát duy nhất trong nhiều trường hợp, mặc dù tôi không chắc chắn về những nói riêng)
Random832

3
@ Random832: Bạn có quyền phân biệt các khóa với các ký tự . Điều này hơi hợp lý và đơn giản đối với một biên tập viên để ánh xạ chuỗi phím C-[ (nhấn Ctrlvà nhấn [) đến ký tựC-[ điều khiển (còn gọi là ký tự), nhưng không, điều đó không bắt buộc đối với người thiết kế trình soạn thảo. Và vâng, Emacs làm điều đó. và là cùng một ký tự, nhưng các phím + và không cần phải được ánh xạ tới bất kỳ ký tự cụ thể nào. ESCC-[ESCCtrl[Esc
vẽ

Câu trả lời:


8

Chuyển thể từ cấu hình của riêng tôi :

(define-key input-decode-map [?\C-\[] (kbd "<C-[>"))
(global-set-key (kbd "<C-[>") 'butterfly)

Điều này rõ ràng sẽ chỉ hoạt động trong GUI.

chỉnh sửa: Lưu ý rằng input-decode-mapthiết bị đầu cuối cục bộ có nghĩa là sửa đổi nó sẽ không hoạt động nếu bạn đang sử dụng emacsclient, nhưng sẽ làm nếu bạn đang sử dụng emacs. Tôi đã khắc phục sự cố trong cấu hình của mình bằng cách gói nó trong một lệnh hoạt động trên khung và thêm nó vào after-make-frame-functionshook.


cảm ơn bạn điều này xuất hiện hợp pháp! Tôi tự hỏi liệu có cách nào để ngăn Emacs đối xử với Meta và ESC như nhau không? Cũng tự hỏi nếu tôi chỉ đơn giản là làm rối tung một số thuật ngữ Emacs và không suy nghĩ thẳng ở đây
zeRusski

1
Đó là một câu hỏi khác, xin vui lòng mở một câu hỏi mới cho điều đó.
wasamasa

thú có <C-i><C-[>ràng buộc trở lại TABESCtrong toàn cầu bản đồ như bạn đề nghị trong cấu hình ra bằng phẳng của bạn bị treo Emacs của tôi mỗi khi tôi nhấn em:
zeRusski

1
Chà, xem xét rằng bạn tình cờ là người đã mắc phải lỗi do lỗi lái xe khi nhập chữ "j" , tôi đổ lỗi cho bản dựng Emacs của bạn bị lỗi và sẽ đề nghị bạn thử một bản khác cho OS X.
wasamasa

hãy tin tôi, tôi đã thử nhiều bản dựng. Sẽ là một bí ẩn khác mà tôi phải sống cùng. Tôi sẽ quản lý -) cảm ơn bạn về giải pháp
zeRusski
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.