有没有办法获取 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