Unescaped содержимое командной строки в оболочке рыбы

Есть ли способ получить неэкранированный контент командной строки в рыбе? Я имею в виду, если командная строка похожа...

$ ls 'foo' "bar"

... желаемый результат будет ls 'foo' "bar",

commandline Команда fish возвращает командную строку, но она автоматически выходит за пределы содержимого. т.е. ls foo bar,

В руководстве я не нашел никаких переключателей, чтобы подавить это поведение.

Контекст: я пытаюсь подражать Bash's ctrl-x ctrl-e который позволяет редактировать содержимое командной строки в редакторе. Для этого мне нужен неэкранированный контент командной строки.

Любая помощь будет оценена.

2 ответа

Оказывается, fish 2.3 исправляет поведение при печати и оставляет командную строку без экранирования. В рыбе 2.3 commandline -b печатает командную строку без экранирования

Это не отвечает на ваш вопрос, я думаю, но я нашел это где-то в Интернете

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
Другие вопросы по тегам