我已经配置了 yasnippet 和自动完成绑定,因此它不会发生冲突、自动完成使用<tab>
和 yasnippet 使用<backtab>
:
(add-to-list 'load-path
"~/.emacs.d/plugins/yasnippet")
(require 'yasnippet)
(yas-global-mode 1)
;; Remove Yasnippet's default tab key binding
(define-key yas-minor-mode-map (kbd "<tab>") nil)
(define-key yas-minor-mode-map (kbd "TAB") nil)
;; Set Yasnippet's key binding to shift+tab
(define-key yas-minor-mode-map (kbd "<backtab>") 'yas-expand)
我创建了两个 yasnippets 一个带有 keylorem_dummy
另一个带有 key lorem_image
,其中一个示例:
# -*- mode: snippet; require-final-newline: nil -*-
# name: lorem_image
# key: lorem_image
# binding: direct-keybinding
# --
<img src="http://lorempixel.com/${1:width}/${2:height}/${3:$$(yas-choose-value '("abstract" "city" "animals" "food" "people" "transport" "business" "sports" "technics"))}/${4:text}" alt="$3">
lorem_dummy
如果我只写 lorem 并按下以在下拉列表中显示两个选项(和) ,是否可以使 Emacs 自动完成工作lorem_image
?因为现在它没有出现 yasnippets,但是常规的自动完成确实有效(变量和其余的东西)。
--更新--
好的,这很奇怪,在遵循“重复问题”链接中的解决方案之后,一切似乎都运行良好,但几个小时后它开始表现得很奇怪,随机,有时它工作有时它不工作。我制作了一个视频来显示问题,它可以工作,然后我重新启动 Emacs 并再次停止工作。