交互非常复杂,我不知道我到底在寻找什么,但也许你仍然可以提供帮助。
有时,通常在发生错误后(返回代码 > 0),当调用最后一个命令时,我在命令行前面插入了一个虚假字符。
> dls WEB-INF
^ (d is inserted, but can be another letter)
我想知道是否是因为我的提示定义
autoload -Uz vcs_info
precmd_vcs_info() {
vcs_info
}
precmd_functions+=( precmd_vcs_info )
setopt PROMPT_SUBST # Allow parameter expansion in prompt.
zstyle ':vcs_info:git:*' formats '%F{cyan}(%b)%f'
zstyle ':vcs_info:*' enable git
PROMPT="
%B%(?.%F{green}.%F{red}$(tput bel)"$'\u2718'" %? )%f%b%F{green}%n@%m%F{black}%B:%b%F{yellow}%~ %f\$vcs_info_msg_0_
%F{magenta}%(!.#.$)%f "
# ? - Exit code of the previous command.
# n - User name.
# m - Machine name.
# . - Abbreviated pwd.
# ! - su?
… 或者是其他东西?
为了清楚起见,我的正常提示是:
(blank line)
user@host:/path/to/current/dir (Git info)
$
并且,如果最后一条命令出现错误,则:
(blank line)
x 127 user@host:/path/to/current/dir (Git info)
$
(其中127
是最后一个命令的返回码。)
我无法轻易重现该问题,我仍然对触发条件(集)感到疑惑。
不过,我还注意到我的 Zsh 历史记录确实包含\n
一些命令后的字符
6848 2020-04-09 14:09 while true; do sleep 1; done
6849 2020-04-09 14:10 dirax-flow-reverse ab-helpdesk-sla-create-priority-level-tab.js\n\n
^^^^
6850 2020-04-09 14:10 ls WEB-INF
6851 2020-04-09 14:10 ls WEB-INF2
... 并回忆起那些(用Up
钥匙)可以引发所描述的错误,但并非总是如此。
事实上,我在某些命令的末尾确实有一些换行符,这是需要解决的问题吗?或者是另一个不相关的问题?(可能来自从文本文件中复制/粘贴命令,我确实有一些要遵循的说明。)
如果您比我看得更清楚,我将非常感激您的任何帮助!
答案1
您可以在这里尝试检查几个选项。
!!<Enter>
是否涉及键绑定?尝试使用(您提到使用箭头)恢复最后一个命令Up
。请参阅https://unix.stackexchange.com/questions/147563/how-do-i-repeat-the-last-command-without-using-the-arrow-keys, https://stackoverflow.com/questions/25295186/access-to-last-command-in-zsh-not-previous-command-line是否涉及提示?删除提示的所有设置。
此外,系统在任何时候都运行正常吗?你做过什么改动吗?
请发表反馈以帮助其他人帮助您。