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

$ ls 'foo' "bar"

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

Команда fish из командной commandline возвращает командную строку, но автоматически экранирует содержимое. то есть ls foo bar .

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

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

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

2 ответа2

1

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

0

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

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

И мне нравится Alt v, так

bind \ev bind_edit_commandline

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .