首页 > 解决方案 > Ultisnips 中的制表位无法与 zsh 一起正常工作

问题描述

我最近从 bash 切换到 zsh,现在我的 Ultisnips-snippets 中的制表位不再正常工作。

我没有更改我的片段文件中的任何内容,在我第一次遇到问题后,我回到 bash,从那里启动 vim,片段再次按预期工作。

我有这些片段

snippet ( iA
($1)$0
endsnippet

snippet mk wA
$$1$$0
endsnippet

如果我从 bash 运行 vim 并键入mk,它将扩展到

$Cursor$

(我将用 表示光标位置Cursor)。然后我可以输入f(,它会扩展为

$f(Cursor)$

如果我按下x然后tab它会带我到

$f(x)Cursor$

(我将把这称为上一步S)。再按tab一下我会到达

$f(x)$Cursor

但是,从 zsh 运行 vim,我仍然可以执行这些步骤,直到S但如果我然后按tab,它将停留在

$f(x)Cursor$

然后开始插入标签。但是,如果我只这样做mk并键入不带括号的其他内容,例如ab

$abCursor$

然后按tab,它将按预期工作并让我

$ab$Cursor

有人知道这里发生了什么吗?如果我想继续使用 zsh 和 Ultisnips,我该怎么办?如果我运行bash -c 'vim file.txt',vim 会运行得很慢并且滞后很多,所以这不是一个真正的选择。任何帮助,将不胜感激。

编辑:显然问题与我使用的 vim 版本有关。我使用 macOS,我描述的问题发生在我使用默认 vim 版本时。如果我使用自定义编译的 vim 版本,它会按预期工作。事实证明,我有一些配置文件告诉 bash 使用自定义编译的版本,而 zsh 仍然使用默认版本。我还在我的电脑(运行 Ubuntu)上尝试了它,并且在那里安装了 vim 版本,它也可以工作。所以我想,我会使用我自定义编译的 vim 来避免这个问题......

但是有人知道,什么 vim 设置可能对此负责?如果我没记错的话,我的自定义编译版本只是 vim 的功能强大的版本。

标签: bashvimzshultisnips

解决方案


推荐阅读