【问题标题】:Unset 'Tab' binding for yasnippet?取消设置 yasnippet 的“Tab”绑定?
【发布时间】:2012-12-28 08:06:47
【问题描述】:

yasn-p 的 Tab 键绑定通常会覆盖其他有用的键。

有没有办法禁用 Yasn-p 的 Tab 绑定以启用其他 Tab 用法?

【问题讨论】:

    标签: emacs yasnippet emacs-prelude


    【解决方案1】:

    这些将删除 yasn-p 的键绑定:

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

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

    【讨论】:

    • 对于在 OSX 上运行的 Yasn-p 版本 0.8.0,yas-expandyasnippet.elyasnippet.elc 中定义为 read-kbd-macro,它使用每个单独的 sn- 中定义的键盘绑定页。如果在 sn-p 目录中的特定模式文件夹中有一个或多个 sn-ps 使用选项卡(例如,C-I),则将禁用常规选项卡键。放置在.emacs 中的经典取消设置或定义键设置将无效。因此,需要修改每个 sn-p 以删除 C-I 并替换为其他内容 - 例如,# binding: M-/
    • 其实不行,我也试过(setq yas/trigger-key nil)也不行,我就是想给yasn-p禁用TAB,怎么这么难?
    【解决方案2】:

    我参加聚会迟到了,但在这个问题中得到了公认的答案......没有用。

    试验了一下,终于找到了解决办法。认为我应该提供一个确实有效的答案:

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

    【讨论】:

    • 我怀疑您激活 yasn-p 并不重要。但是,您需要先加载该库,然后才能操作它的键盘映射。 eval-after-load 提供了一种无需立即加载库即可指定此类配置的方法。
    【解决方案3】:

    use-package:

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

    【讨论】:

      【解决方案4】:
      (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)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-07
        • 1970-01-01
        • 2013-06-28
        • 1970-01-01
        • 2011-03-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多