fish shell 中未转义的命令行内容

fish shell 中未转义的命令行内容

有没有办法获取 fish 中命令行的未转义内容?我的意思是,如果命令行像...

$ ls 'foo' "bar"

... 期望的输出是ls 'foo' "bar"

fish命令commandline确实返回了命令行,但它会自动转义内容。即ls foo bar

在手册中我没有找到任何可以抑制这种行为的开关。

上下文:我正在尝试模拟 bash ctrl-x ctrl-e,它允许在编辑器中编辑命令行内容。为此,我需要命令行的未转义内容。

任何帮助,将不胜感激。

答案1

事实证明 fish 2.3 修复了打印行为并使命令行保持未转义状态。在 fish 2.3 中,commandline -b命令行未转义。

答案2

我认为这并不能回答你的问题,但我在网上某处找到了这个

function bind_edit_commandline
    set -l tmp (mktemp /tmp/fish-fc.XXXXXX)
    commandline > $tmp
    eval $EDITOR $tmp
    commandline -r ""
    cat $tmp | while read -l cmd; commandline -a "$cmd" ""; end 
    rm $tmp
end

我喜欢Altv,所以

bind \ev bind_edit_commandline

相关内容