鱼喜欢 Zsh 中的 ls 键绑定

aaa*_*aaa 2 zsh

在鱼壳中,当您按下Alt+l它时,它会ls很好地显示命令的输出。它会保留您按下之前正在编写的命令。我想在 zsh 中有这个。

这是我非常不稳定的尝试:

function myls {
    awk '{len = length($0); for(i=0;i<len;i++) printf "\b"}' <<< "$LBUFFER"
    zle push-input
    zle accept-line
    print $(ls --color=always --indicator-style=slash)
}
zle -N myls
bindkey -- '^[l' myls
Run Code Online (Sandbox Code Playgroud)

我努力清除现有命令,最终使用了 hacky\b的。它不能在长行和多行上正常工作。

谁能做得更好?

oka*_*api 5

使用zle -Rpush-input重新显示行没有缓冲。

在大多数情况下,我发现 zsh 的完成列表不需要小部件来运行 ls。它处理 ls 样式颜色和文件类型后缀。我有以下绑定,它在任何上下文中完成文件并ls -l列出一个很长的样式列表:

zstyle ":completion:file-complete::::" completer _files
zle -C file-complete complete-word _generic
zstyle ':completion:file-complete:*' file-list true
bindkey '^X^F' file-complete
Run Code Online (Sandbox Code Playgroud)