2012-12-28 25 views

Trả lời

9

Những điều này sẽ loại bỏ chìa khóa yasnippet của ràng buộc:

(define-key yas-minor-mode-map [(tab)] nil) 
(define-key yas-minor-mode-map (kbd "TAB") nil) 

nên làm việc. Hoặc bạn có thể liên kết tab với lệnh khác.

+0

Như để Yasnippet phiên bản 0.8.0 chạy trên OSX, 'yas-expand' được định nghĩa trong' yasnippet. el' và 'yasnippet.elc' là' read-kbd-macro', sử dụng các ràng buộc bàn phím được xác định trong từng đoạn mã riêng lẻ. Nếu có một hoặc nhiều đoạn mã trong thư mục chế độ cụ thể trong thư mục đoạn mã sử dụng tab (ví dụ: 'C-I'), điều này sẽ vô hiệu hóa khóa tab thông thường. Việc bỏ đặt cổ điển hoặc xác định các cài đặt khóa được đặt trong '.emacs' sẽ không có hiệu lực. Do đó, mỗi đoạn mã sẽ cần phải được sửa đổi để loại bỏ 'CI' và được thay thế bằng một thứ khác - ví dụ:' # binding: M-/' – lawlist

+2

nó thực sự không hoạt động, tôi cũng đã thử (setq yas/trigger-key nil) cũng không hoạt động, tôi jsut muốn vô hiệu hóa TAB cho yasnippet, tại sao nó rất khó? – shelper

-1
(setq yas-minor-mode-map ;This MUST before (require 'yasnippet) 
    (let ((map (make-sparse-keymap))) 
    (define-key map (kbd "M-i") 'yas-expand) 
    (define-key map "\C-c&\C-n" 'yas-new-snippet) 
    (define-key map "\C-c&\C-v" 'yas-visit-snippet-file) 
    map)) 

(require 'yasnippet) 
5

Tôi đến trễ cho bữa tiệc nhưng đến khi câu trả lời được chấp nhận trong câu hỏi này ... đã không hoạt động.

Thử nghiệm một chút và cuối cùng đã tìm thấy giải pháp. Nghĩ rằng tôi nên đóng góp một câu trả lời rằng không công việc:

;; It is crucial you first activate yasnippet's global mode. 
(yas/global-mode 1) 

;; The following is optional. 
(define-key yas-minor-mode-map [backtab]  'yas-expand) 

;; Strangely, just redefining one of the variations below won't work. 
;; All rebinds seem to be needed. 
(define-key yas-minor-mode-map [(tab)]  nil) 
(define-key yas-minor-mode-map (kbd "TAB") nil) 
(define-key yas-minor-mode-map (kbd "<tab>") nil) 
+0

Tôi nghi ngờ điều quan trọng là bạn * kích hoạt * yasnippet. Thư viện sẽ cần phải được * nạp *, tuy nhiên, trước khi bạn có thể thao tác các keymap của nó. 'eval-after-load' cung cấp một cách để chỉ định các loại cấu hình này mà không phải tải thư viện ngay lập tức. – phils

1

Với use-package:

(use-package yasnippet 
    :demand t 
    :bind (:map yas-minor-mode-map 
     ("TAB" . nil) 
     ("<tab>" . nil)) 
    :config 
    (yas-global-mode)) 
Các vấn đề liên quan