我在 Ubuntu 22.04 上运行了 zsh 5.8.1。当我在提示符上输入一些文本并键入Ctrl+u时,它会按预期清除该行。但是,当我输入Ctrl+y时,它只显示
$ ^Y
是什么导致无法粘贴 readline 缓冲区?
这是我的 .zshrc:
export ZSH="$HOME/.oh-my-zsh"
ZSH_THEME=""
plugins=(
colored-man-pages
colorize
git
zsh-autosuggestions
zsh-interactive-cd
vi-mode
)
ZSH_AUTOSUGGEST_STRATEGY=(history completion)
source $ZSH/oh-my-zsh.sh
unalias ls
unalias ll
unalias lsa
unalias gst
alias gs='git status'
alias gcob='git checkout -b'
bindkey "^[[1;5C" forward-word
bindkey "^[[1;5D" backward-word
bindkey "^[." insert-last-word
_sig_array=($(kill -l))
_return_status() {
ret=$?
if [ $ret -ne 0 ]; then
if [ $ret -le 128 ]; then
echo $ret
else
sig=$(( $ret - 128 ))
desc=$_sig_array[sig]
if [ "$desc" != INT -a "$desc" != TSTP ]; then
echo SIG$desc
fi
fi
fi
}
_return_status_formatted() {
out=$(_return_status)
if [ -n "$out" ]; then
echo "%F{red}[$out]%f "
fi
}
_current_branch_formatted() {
out=$(current_branch)
if [ -n "$out" ]; then
if [ -n "$(git status -s | grep -v '^\?')" ]; then
color=magenta
else
color=cyan
fi
echo "%F{$color}(git:$out)%f "
fi
}
export PS1='%F{blue}%n%f@%F{green}%m%f:%F{red}%~%f $ $(_return_status_formatted)$(_current_branch_formatted)'
zsh
如果or变量包含,默认情况下将使用vi
键绑定(然后假设您更喜欢)。$EDITOR
$VISUAL
vi
vi
^Y
粘贴是一个 emacs 键绑定(vi
等效于p
/P
)。添加一个:
向您
~/.zshrc
表明无论您的编辑器选择如何,您都需要 emacs 键绑定(与 中的相同tcsh
)。或者set -o emacs
(与 ksh 中的相同)。关于您的其他一些注意事项
~/.zshrc
:默认情况下已经存在
emacs
,因此您不需要它。已经有一个内置
$signals
数组(注意它从EXIT
== 0 开始,因此您需要$signals[signum+1]
从数字中获取名称)。的行为
grep -v '^\?'
未指定。用于grep -v '^?'
删除以 开头的行?
,或grep -v '^\\?'
删除以 开头的行\?
。local
如果函数不是全局变量,那么向函数声明变量是一个好习惯。另见
[[ $desc = (INT|TSTP) ]] || echo SIG$desc
。通常,与其他 shell 一样,内置的
-a
运算符已[
被弃用。在这里,您可以
((...))
始终如一地使用: