Sự khác biệt giữa TAB và <tab> là gì?


15

Tôi đang đọc tài liệu cho chế độ Yasnippet, khi tôi đến phần xác định khóa kích hoạt:

Có vẻ như chế độ nhỏ Yasnippet xác định TABkhóa để chạy yas-expandbằng cách sử dụng:

(define-key yas-minor-mode-map (kbd "<tab>") 'yas-expand)
(define-key yas-minor-mode-map (kbd "TAB") 'yas-expand)

Sự khác biệt giữa <tab>và là TABgì? (Tôi đã cố gắng google nó nhưng tôi không thể tìm thấy một mô tả rõ ràng)

Câu trả lời:


9

Mặc dù Emacs thường dịch <tab>(phím đơn) thành TAB( C-i), bạn có thể liên kết <tab>TABvới những thứ khác nhau:

(global-set-key (kbd "<tab>") #'proced)
(global-set-key (kbd "TAB") #'indent-for-tab-command)

2
Tôi hiểu, nhưng tại sao Yasnippet cần xác định cả hai <tab>TAB?
Håkon Hægland

3
@ HåkonHægland nếu bạn tình cờ liên kết chúng với các lệnh khác nhau trên bản đồ toàn cầu, emacs dừng dịch cái này sang cái khác (ngay cả trên bản đồ chế độ nhỏ), vì vậy yasnippet liên kết cả hai chỉ trong trường hợp.
Malabarba

1
@Malabarba Vậy nếu bạn xác định cả hai <tab>TAB, cách duy nhất để chạy lệnh liên quan đến TABlà gõ C-i?
Håkon Hægland

2
Nếu bạn liên kết <tab>với một lệnh khác với những gì bạn liên kết TAB, thì những gì bạn nhận được khi nhấn phím "Tab" phụ thuộc vào cái / cái mà nó gửi cho Emacs. Nếu nó gửi C-i(aka TAB) thì bạn nhận được TABràng buộc. Nếu nó gửi <tab>thì bạn có được ràng buộc của nó. (Và vâng, bạn luôn có thể nhấn C-iđể có được sự TABràng buộc.)
vẽ

1
Xem thêm thông tin lịch sử về sự khác nhau TABphím được đưa ra bởi StreakyCobratrong này vấn đề github spacemacs. Bạn có thể muốn bao gồm một số thông tin đó trong câu trả lời của bạn.
Håkon Hægland
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.