Làm thế nào để phân biệt Ci với TAB?


20

Thông thường, vì lý do lịch sử, emacs đối xử với TABC-ikhóa và khóa là như nhau, xem tài liệu không thể thiếu của emacs về các phím chức năng hoặc câu trả lời của abo-abo cho câu hỏi "Sự khác biệt giữa TAB và?" .

Chú ý: Trong bài này, mã phím là TAB, <tab>C-i; tabCtrl+ imặt khác là các phím vật lý trên bàn phím.

Tuy nhiên, tại thời điểm này, emacs đối xử với TABC-inhư điều tương tự, tức là (equal (kbd "TAB") (kbd "C-i"))-> t.

Tuy nhiên, vì chúng ta không còn sống trong sự kỳ quặc của máy tính, tôi thấy điều này vô cùng khó chịu. Có một vài gợi ý ngoài kia những gì có thể được thực hiện để giải quyết vấn đề này, vd

Không có giải pháp nào trong số các giải pháp này có vẻ là giải pháp thực sự, tôi muốn xem xét chúng là cách giải quyết hoặc hack (của lỗi hiện tại ).

Có cách nào để buộc emacs ánh xạ tabtới (kbd "<tab>")(kbd "TAB")trong khi Ctrl+ iđược ánh xạ tới mức (kbd "C-i")thiếu modyfing mã nguồn của emacs không?

Cách tiếp cận này phải hoàn toàn vô hình với người dùng, nghĩa là các tabmã khóa giống như <tab>TABnên ánh xạ tới một ràng buộc trong khi mã khóa Ctrl+ igiống như C-iánh xạ tới một ràng buộc khác.

Trên một lưu ý ít nghiêm trọng hơn: Bất kỳ nhà phát triển emacs nào ở đây có thể nhận xét liệu điều này sẽ được thay đổi / sửa trong mã nguồn emacs tại một số điểm?


2
Lưu ý rằng TABC-i(các mã, không phải các khóa) là một và giống nhau theo định nghĩa của TAB.
Stefan

@Stefan Đó là lý do tại sao tôi thêm điều Lưu ý . Tôi sẽ chỉnh sửa bài viết và đặt nó ở đó.
elemakil


IMO, câu hỏi này không phải là một bản sao, vì nó muốn định vị lại tất cả các liên kết phím được xác định trên TAB (ngay cả những câu hỏi từ các gói bên ngoài), để sử dụng <tab> thay vào đó. Trong khi câu hỏi khác là hỏi làm thế nào để phân biệt chúng trong mã của riêng bạn.
Malabarba

Đề nghị của tôi sẽ khuyên bạn nên kbddịch TAB dưới dạng [tab]. Nó chỉ không hoạt động cho các phần được tải sẵn của Emacs.
Malabarba

Câu trả lời:


21

Tương lai đã qua lâu, và thời kỳ đồ đá của máy tính sắp sửa đến. Tất cả các thiết bị đầu cuối văn bản Tôi biết vẫn gửi cùng một byte-chuỗi chính xác để Emacs cho C-ilà cho TAB, vì vậy nhu cầu ban đầu cho "Unify" họ vẫn còn rất nhiều với chúng tôi.

Bản đồ-giải mã đầu vào (à la (define-key input-decode-map "\C-i" [C-i])) có lẽ cũng tốt như hiện tại.

Là người bảo trì cũ của Emacs, tôi hoan nghênh một giải pháp tốt hơn cho vấn đề này, để giải phóng các phím C-i( C-mC-[) trong GUI (có thể làm cho chúng "dành riêng cho người dùng"). Nhưng tôi không biết làm thế nào để làm điều đó mà không gây ra nhiều vấn đề với các gói hiện có.



Tự hỏi bạn sử dụng loại bàn phím nào? Với bàn phím QWERT điển hình, sự khác biệt chỉ là rõ ràng và không thể phân biệt các phím này là một nỗi đau ...
Ivan Huang
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.