【问题标题】:zsh in vi mode; how to change color scheme?zsh 在 vi​​ 模式下;如何更改配色方案?
【发布时间】:2020-05-13 13:56:06
【问题描述】:

我最近使用自定义配置文件从 bash 切换到 zsh,并使用 vim 模式。一切正常,但我真的不喜欢选择(标记)模式的配色方案。

我想要这样的东西:https://imgur.com/YMQhrol

而我现在的情况是这样的:

  1. [正常] (https://imgur.com/DZjV3cD)
  2. [视觉模式开启] (https://imgur.com/FEZFF29)
  3. [选择] (https://imgur.com/6UN6TDL)

正如您所见,选择块与背景颜色相同,因此很难区分并且顶部只有一点点特征。 我试图搜索要编辑的文件以更改配色方案,但我只找到了主题和模组的链接。

我们将不胜感激任何帮助解决这个烦恼。

【问题讨论】:

    标签: zsh


    【解决方案1】:

    您需要设置zle_highlight 数组。以下内容接近您的示例。您可能希望在数组中设置其他键,例如 default: 和 paste:。许多 zsh 文档使用 emacs 术语 region

    zle_highlight=( region:bg=229,fg=235 )

    光标颜色是为您的终端模拟器配置的,而不是在 zsh 的控制之下。值得关注与光标的交互。光标位置始终是 vim 模式中选择的一部分,因此如果光标和选择都应用反向视频,则效果无用。为zle-keymap-select() 添加一个钩子是个好主意,它可以在块和条之间交换光标以实现正常与插入模式。转义序列可能取决于您的终端模拟器,但类似于:

    zle-keymap-select() {
      if [[ $KEYMAP = vicmd ]]; then
        print -n '\e[2 q'
      else
        print -n '\e[5 q'
      fi
    }
    zle-line-init() {
      print -n '\e[5 q'
    }
    zle -N zle-keymap-select
    zle -N zle-line-init
    preexec() {
      print -n $'\e[2 q'
    }
    

    不幸的是,很难捕捉到视觉模式已启用但未选择文本。 visual 键盘映射永远不会被“选中”,因为它是覆盖在 vicmd 上的本地键盘映射。

    【讨论】:

    • 感谢您的回答和光标代码,尽管我的 zsh 配置文件中已经有了“change-cursor-shape”代码。
    猜你喜欢
    • 2011-04-27
    • 1970-01-01
    • 2011-04-07
    • 1970-01-01
    • 1970-01-01
    • 2015-02-27
    • 2020-01-30
    • 2017-12-05
    • 1970-01-01
    相关资源
    最近更新 更多