在鱼壳中,当您按下它时,它会很好地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
我努力清除现有命令,最终使用了 hacky\b
的。它在长行和多行上无法正常工作。
谁能做得更好?
zle -R
在 之后使用push-input
重新显示没有缓冲区的行。在大多数情况下,我发现 zsh 的完成列表不需要小部件来运行 ls。它执行 ls 样式颜色和文件类型后缀。我有以下绑定,它可以在任何上下文中完成文件并执行长的
ls -l
样式列表:感谢@okapi 的输入,我想出了这个。
它好多了,但它不能像循环'for> ...'和'while> ...'那样使用延续,所以我现在只返回它们。