取消设置yasnippet的'Tab'绑定?

时间:2012-12-28 08:06:48

标签: emacs yasnippet emacs-prelude

yasnippet的 Tab 键绑定经常会覆盖其他有用的键。

有没有办法禁用Yasnippet的 Tab 绑定以启用其他 Tab 用法?

4 个答案:

答案 0 :(得分:9)

这些将删除yasnippet的键绑定:

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

应该有效。或者您可以将tab绑定到另一个命令。

答案 1 :(得分:5)

我参加晚会但是在这个问题上找到了接受的答案......但是没有成功。

实验了一下,终于找到了解决方案。我想我应该提供工作的答案:

;; 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)

答案 2 :(得分:1)

使用use-package

(use-package yasnippet
  :demand t
  :bind (:map yas-minor-mode-map
         ("TAB" . nil)
         ("<tab>" . nil))
  :config
  (yas-global-mode))

答案 3 :(得分:-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)