company 和 yasnippet tab键冲突

比如下面这个图:

接下来我期望是 tab 移动到另一个 Snippet Field,但是Company把 tab键占了,结果却是在Company补完菜单内移动,这有什么好的解决办法吗?

我习惯 ENTER 键上屏:

  (setq company-auto-complete-chars '((kbd "RET")))
  (with-eval-after-load 'company
    (define-key company-active-map (kbd "M-n") nil)
    (define-key company-active-map (kbd "M-p") nil)
    (define-key company-active-map (kbd "C-n") #'company-select-next)
    (define-key company-active-map (kbd "C-p") #'company-select-previous)
    (define-key company-active-map (kbd "TAB") #'yas-expand))
1 个赞

我也是。 回复真神速,谢谢 这样的话就不能用 tab 键在 Company选单内移动了,鱼与熊掌不可兼得啊

而且这样的话 Company 的分段补全功能也没了,这有点不能接受,有没有更好的办法?比如只在光标位于 yasnippet Field内时才这样?

抱歉,FALSE Alarm,spacemacs应该是已经把这个问题解决了,虽然会弹出Company 菜单,但是按tab键会直接跳转,而不是在菜单内移动。

有的时候觉得 spacemacs 还是挺人性化的。

我前面的回复只是举个例子,说明可以在 (with-eval-after-load 'company 修改 company 激活后的行为。

你问题有些地方我还没看明白。多段补全是什么?

比如我输入 regexTAB,会补全为 regexp-,再按 TAB,会在菜单内向下移动,或者继续补全.

出现 company 选单之后,按TAB 跳到下一个 yas field: (没判断光标位置是不是 field)

  (with-eval-after-load 'company
    (define-key company-active-map (kbd "TAB") nil)
    (define-key company-active-map (kbd "TAB") #'yas-next-field)
    )

不知道 spacemacs 是怎样设置的。

估计是类似这样的吧,但是加入了 Field 的判断

不知道这个问题是什么时候修复的,我记得以前好像不是这样的,所以才会发帖。

No offense, but

现在发帖不看贴已经成为时尚了吗?

首先,我的问题已经解决了

然后,你这个和我描述的问题不相关。而且没有任何说明,上来就粘一段代码,也很难对其它同学产生帮助。

也遇到这个问题。使用 @twlz0ne 的代码也不好用

暂时使用 @zilongshanren 的方法,绑定到了CMD+/ 还比较好按

@young40 你可以试试 spacemacs develop,已经不存在这个问题了

不行,我的还是键入fun的情况下TAB无任何反应。

M+/则正常snippst

咱们说的不是一回事,你没有仔细看帖子。我这个帖子说的是 yas 已经展开的情况下,tab 在 field 间的移动问题。

你说的是展开问题,展开遇到冲突的时候都是用 M-/ 没问题的

嗯嗯,明白。我暂时先不搞了,还没有用过snippst,先用着。

谢谢哈。:pray: