如何在 zsh 中自定义当前选定(突出显示)完成的外观?

Isk*_*tvo 3 zsh zshrc zsh-completion

主要问题

我想在所选完成的开头和结尾添加电力线字符,如下所示:

  1. 通过插入c并按下键启动完成菜单TAB。
  2. 按向右箭头键在完成菜单中向右移动。
  3. 按向下箭头键在完成菜单中向下移动。

有什么方法可以让 zsh 看起来/行为像图片中那样吗?

笔记

在创建列以保持对齐正确时,应以某种方式考虑在开头添加的电力线三角形 + 空白字符和末尾的空白字符 + 电力线三角形。

奖金

在列表中每个补全内容的开头添加 2 个空格,这样当选择补全内容时,文本看起来就不会移到右侧。
(这个问题可以通过比较有选择和没有选择的完成情况来看出。)


另类问题

如果不更改 zsh 源代码就无法实现先前解释的行为,是否至少可以仅在所选完成的末尾添加电力线三角形?


我不成功的尝试

  • 我尝试过在样式中使用lc、rc和变量,但这没有帮助: eclist-colors
    1. 完成列表排列不当,造成了各种视觉问题。
    2. 符号被插入到完成列表的所有元素中,而不仅仅是选定的元素中。
  • 我也尝试过使用该ma变量,但无法在开头正确插入字符:
    1. 该变量只需要一个代表颜色的数字,并且它可能包含在一些转义序列中,因此输出看起来不像预期的那样。

nho*_*oyr 5

这对我有用。

zstyle ":completion:*:default" list-colors ${(s.:.)LS_COLORS} "ma=48;5;153;1"
Run Code Online (Sandbox Code Playgroud)

使用我的 LS_COLORS,然后 ma 将我选择的背景设置为粗体,颜色为https://jonasjacek.github.io/colors/中的 153 。

从https://www.zsh.org/mla/users/2010/msg00811.html找到