zsh Tab 补全功能在当前文件夹 (.肌酐)->./script.sh

zsh Tab 补全功能在当前文件夹 (.肌酐)->./script.sh

我对 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

相关内容