zsh - zsh 在 vi 模式下;如何更改配色方案?
问题描述
我最近使用自定义配置文件从 bash 切换到 zsh,并使用 vim 模式。一切正常,但我真的不喜欢选择(标记)模式的配色方案。
我想要这样的东西:https ://imgur.com/YMQhrol
而我现在的情况是这样的:
- [正常] ( https://imgur.com/DZjV3cD )
- [视觉模式开启] ( https://imgur.com/FEZFF29 )
- [选择] ( https://imgur.com/6UN6TDL )
如您所见,选择块与背景颜色相同,因此很难区分,顶部只有一点点特征。我试图搜索要编辑的文件以更改配色方案,但我只找到主题和模组的链接。
任何帮助解决这个烦恼将不胜感激。
解决方案
您需要设置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
.
推荐阅读
- python - 如何让 python 数据类继承 __hash__?
- java - 如何组合三个连续的 Modbus 寄存器得到一个整数值?
- amazon-web-services - 将文件上传到 S3 存储桶的最佳选择
- c# - 物品、物品数量的智能分组
- html - 如何根据窗口大小调整图像大小
- c# - DebuggerStepThrough 属性 - 如何也跳过子方法
- python - 函数后跟(点)然后变量 [func.var] 在 python 中是什么意思?
- python-3.x - 使用解析器重新同步的 PLY.yacc 错误处理
- ios - 在显示之前将 ViewController 加载到 ContainerView 中,因此没有可见的过渡
- variables - 如何在 Lua 中获取表的实际副本?