vterm 中 zsh 的自动补全显示不全?

今天在 macOS 上折腾了一下 vterm,速度确实是比较快的,跟 iterm2 不相上下了,开 top 都不会卡。 term 就会有明显延迟。唯一遇到一点小问题是zsh的自动补全(zsh-autosuggestions 插件)只显示了一个字母,不知道有没有人知道怎么怎么解决?。

vterm 中是这样:
image

iterm2 中是这样的:
image

在 term 和 ansi-term 中也是正常:

zshrc 进行了下面的设置:

if [[ "$INSIDE_EMACS" = 'vterm' ]] \
    && [[ -n ${EMACS_VTERM_PATH} ]] \
    && [[ -f ${EMACS_VTERM_PATH}/etc/emacs-vterm-zsh.sh ]]; then
    source ${EMACS_VTERM_PATH}/etc/emacs-vterm-zsh.sh
fi

这是我目前使用的 vterm 配置

我的 emacs 中的 vterm 也没啥特别的配置, zsh 配置的相关代码如下:


# This speeds up pasting w/ autosuggest
# https://github.com/zsh-users/zsh-autosuggestions/issues/238#issuecomment-389324292
pasteinit() {
  OLD_SELF_INSERT=${${(s.:.)widgets[self-insert]}[2,3]}
  zle -N self-insert url-quote-magic # I wonder if you'd need `.url-quote-magic`?
}

pastefinish() {
  zle -N self-insert $OLD_SELF_INSERT
}
zstyle :bracketed-paste-magic paste-init pasteinit
zstyle :bracketed-paste-magic paste-finish pastefinish

# https://github.com/zsh-users/zsh-autosuggestions/issues/351
ZSH_AUTOSUGGEST_CLEAR_WIDGETS+=(bracketed-paste)

很奇怪,我用了你的 zsh 配置也是不行。可能是跟 zsh 版本 有关了。

找到问题了,原来是主题的原因。切回默认主题可以正常显示。

image

在内置的 modus-themes主题下也是正常的:

不得不赞一下 modus-themes 主题支持的 face 之多,连 awesome-tray 都支持 :smile:

1 个赞

目前 Purcell 的 color-theme-sanityinc-tomorrow 主题已经修复了这个问题,主要是 zsh-autosuggestion 使用了黑色造成的。

1 个赞

以前我也遇到过 就是主题背景色 导致你看不见

通用解决方案应该是设置zsh的配色。Centaur dotfiles 中的例子:

if [ -n "$INSIDE_EMACS" ]; then
    ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=gray,underline'
fi

2 个赞

:+1: 你这个方案确实通用,如果以后大家在其他主题再遇到这个问题,就不用从主题方面去找解决方案了。