我对 zsh (或 oh-my-zsh) 有一个问题:
当我想在当前目录中运行脚本时,我会这样做./script.sh
。在 bash 中我可以这样做.<TAB>
,它会告诉我./
在哪里可以继续输入脚本名称./sc<TAB>
,最后会显示./script.sh
现在的问题是,当我.<TAB>
在 zsh 中执行此操作时,我得到了一个备选列表,其中没有一个是./
。
我之所以不直接打字,./
是因为在挪威语键盘布局上打字很麻烦:.
然后SHIFT+7
。让我感觉效率低下:)
我已经尝试过zstyle ':completion:*' special-dirs true
一些选项,例如
setopt autolist
unsetopt menucomplete `
但对我而言似乎没有什么作用。
我对此还很陌生,因此我非常感谢任何能够帮助解决这个问题的人!
答案1
我不知道如何调整完成系统,以便它.
始终扩展为./
。但这里有一个针对您描述的特殊情况的解决方法,即在命令行的开头:
expand-or-complete-special-dot() {
if [[ $BUFFER == "." ]]; then
LBUFFER="./"
fi
zle expand-or-complete
}
zle -N expand-or-complete-special-dot
bindkey "^I" expand-or-complete-special-dot
expand-or-complete
这是对默认绑定到的正常函数的包装器TAB
。