空行上的 zsh 选项卡完成

kri*_*ous 13 shell zsh configuration

我想要一个我找不到的 tcsh 主义:在没有内容的空白行上,我想按 Tab 键并查看等效的 ls。也就是说我想要

$ <tab>
Run Code Online (Sandbox Code Playgroud)

做其他事情然后给我一个\t。我找到了用于命令完成的绝佳资源,但不适用于此基本情况。对此的任何帮助都会很棒!谢谢。

Gil*_*il' 10

行首的行为Tab样式控制。但是,只有两种受支持的行为:insert-tab

  • 照常完成,在 zstyle ':completion:*' insert-tab false
  • 插入一个制表符,在 zstyle ':completion:*' insert-tab true
  • 一个或另一个下 zstyle ':completion:*' insert-tab pending[=N]

如果你只是想在那个位置完成命令,zstyle ':completion:*' insert-tab true就可以了。如果你想要不同的东西,比如列出当前目录中的文件,你需要修改_main_complete.

最近在 zsh-workers 列表上讨论了一个线程insert-tab


Joh*_*rry 9

# expand-or-complete-or-list-files
function expand-or-complete-or-list-files() {
    if [[ $#BUFFER == 0 ]]; then
        BUFFER="ls "
        CURSOR=3
        zle list-choices
        zle backward-kill-word
    else
        zle expand-or-complete
    fi
}
zle -N expand-or-complete-or-list-files
# bind to tab
bindkey '^I' expand-or-complete-or-list-files
Run Code Online (Sandbox Code Playgroud)