当我'|'在 zsh 命令行上键入一个空格后跟管道符号时,zsh 会占用空间,将管道符号直接放在前面的单词上。我如何阻止它这样做?我不确定任何可能的风格约定,但我喜欢管道符号两侧的空格以提高可读性。我几乎开箱即用地使用 oh-my-zsh。
解决方案
根据下面mpy的回答,我使用了以下解决方案:
默认情况下,zsh/ohmyzsh 中未定义 ZLE_REMOVE_SUFFIX_CHARS。未定义时,它的行为就像:
ZLE_REMOVE_SUFFIX_CHARS=$' \t\n;&|'
Run Code Online (Sandbox Code Playgroud)
我在 ~/.zshrc 中添加了以下定义:
ZLE_REMOVE_SUFFIX_CHARS=$' \t\n;&'
Run Code Online (Sandbox Code Playgroud)
(所有管道除外)和快速,完美!问题消失了。
我正在 Windows 中设置 zsh 并且我在每个提示上方的行中的第一个字符位置得到一个反向(白底黑字(黑色终端背景))百分比符号。
通常这意味着文件末尾没有换行符,例如在cat-ing 文件时。
它不会发生在我的 Mac 上,甚至不会发生在 Windows 上的 Mintty 上。但它确实发生在 ConEmu 和 CMD.EXE 通常运行的标准终端应用程序中。
我已经有了unset我所有的提示字符串以及precmd()我通常用来在提示上方添加一个空行的字符串。
任何线索可能是什么?
我有一个来自 Gary Bernhardt 的 dotfiles 的 bash 脚本,它打印了最近 git 提交的漂亮彩色列表。它使用该column命令将输出排列成列。在我的 Mac 上,它运行得非常好。
然而奇怪的是,当我在 Cygwin 或 CentOS 6 上运行它时,列位不起作用。所有字段之间都有三个空格,无论它们的长度如何,都会在“列”之间产生锯齿状的排水沟。我已将其范围缩小到 ANSI 颜色转义码。如果我删除这些,列会排成一列。
zsh 版本在所有三个上都相同(并且问题在 bash 中的出现方式完全相同)。我不知道是什么版本column,但它们看起来完全一样,而且它们的手册页对于任何有价值的东西都是一样的。
为什么这适用于我的 Mac 而不适用于其他操作系统?