这招只好使一半…
我设置了 dotspacemacs-distinguish-gui-tab t
, 然后在 web-mode
里的 C-i
就不是绑定的 emmet-expand
了. 但是它提示我 <C-i> is undefined
…
是不是代码写错地方了, 没生效…
用 use-package
写。
直接写上去怕是会被覆盖的。
尴尬… 这个要怎么写…
需要在 web-mode
下的时候, 去改变 yas-expand
这个函数的绑定键.
之前的例子是在那个包就设置哪个包的方法… 这个我写在 web-mode
里设置也不生效…
先放 user-config
等等,你为什么要用全局绑定?
放在 user-config
是不生效的, web-mode
的时候 C-i
总是显示undefined
.
如果dotspacemacs-distinguish-gui-tab nil
的时候那么默认的C-i
总是绑定的emmet-expand
.
使用全局是因为我试着用(local-set-key)
也没啥效果…
local-set-key
是
The binding goes in the current buffer’s local map, which in most cases is shared with all other buffers in the same major mode.
而这个local-set-key
运行的时候所谓current buffer是什么情况,这是很不确定的吧?
今天才听说的这个函数,一直用define-key
, evil-define-key
,都挺好的。。比如
(define-key web-mode-map (kbd "TAB") nil)
(evil-define-key 'insert web-mode-map (kbd "C-l") #'emmet-expand-yas)
还是不行, 懒得折腾了. 心累
你得用<C-i>
而不是C-i
了,这个应该是直接把C-i识别成另外一个键了,有点tricky
沒错,(kbd "C-i")
返回的是 ^I
,所以会混淆
emacs wiki: yasnippet + auto-insert
;; Auto add HEADER in new file
(add-hook 'find-file-hook
'(lambda ()
(when (and (buffer-file-name)
(not (file-exists-p (buffer-file-name)))
(= (point-max) 1))
(let ((header-snippet "HEADER")
(yas/fallback-behavior 'return-nil))
(insert header-snippet)
;; if can't expand snippet, delete insert string
(if (not (yas/expand))
(delete-region (point-min) (point-max)))))))
不是这个原因, 是只要到了insert
模式,那些绑定键就失效了。。
⋯⋯ Evil insert state 按键是分开的。你要用 evil-define-key
而不是 define-key
或 global-set-key
。
好像没啥问题撒, 难道不应该写在 user-config 里面?
(evil-define-key 'insert evil-insert-state-map (kbd "<C-i>") 'yas-expand)
这样还是提示 <C-i> is undefined
解决方案: 用新的快捷键全部覆盖
(defun html/init-emmet-mode ()
(use-package emmet-mode
:defer t
:init (spacemacs/add-to-hooks 'emmet-mode '(css-mode-hook
html-mode-hook
sass-mode-hook
scss-mode-hook
web-mode-hook))
:config
(progn
(evil-define-key 'insert emmet-mode-keymap (kbd "<C-i>") 'spacemacs/emmet-expand)
(evil-define-key 'insert emmet-mode-keymap (kbd "<C-i>") 'spacemacs/emmet-expand)
(evil-define-key 'emacs emmet-mode-keymap (kbd "<C-i>") 'spacemacs/emmet-expand)
(evil-define-key 'emacs emmet-mode-keymap (kbd "<C-i>") 'spacemacs/emmet-expand)
(evil-define-key 'hybrid emmet-mode-keymap (kbd "<C-i>") 'spacemacs/emmet-expand)
(evil-define-key 'hybrid emmet-mode-keymap (kbd "<C-i>") 'spacemacs/emmet-expand)
(spacemacs|hide-lighter emmet-mode))))