LINUX.ORG.RU

История изменений

Исправление Zmicier, (текущая версия) :

Выполнить что-либо, а его stdout перенаправить в readline buffer интерактивного баша, посмотреть, подправить и нажать ЕНТЕР для выполнения

Ну, это-то дело совсем нехитрое:

readline-collect-output ()
{
    read -r -d '' READLINE_LINE < <($READLINE_LINE)
    READLINE_POINT=${#READLINE_LINE} # курсор в конец строки
}

bind -m emacs -x '"\C-j" : "readline-collect-output"'

Мне, однако, кажется, что это не очень удачный подход — предсказать, сколько строк будет в выводе не очень просто, а количество знаков, что можно ввести в командную строку, бесконечным быть не должно. Да и редактировать простыню в Ридлайне откровенно неудобно — это все-таки редактор одной строки.

Я бы подумал в сторону смены эмулятора терминала на что-нибудь менее тупое.

Вот как в том же term.el можно переключиться в построчный режим (C-c C-j), любым удобным способом вернуться на любую строчку выше — будь она вводом или выводом, на месте ее изменить и нажать на ввод — она уйдет на выполнение.

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

Исходная версия Zmicier, :

Выполнить что-либо, а его stdout перенаправить в readline buffer интерактивного баша, посмотреть, подправить и нажать ЕНТЕР для выполнения

Ну, это-то дело совсем нехитрое:

readline-collect-output () {
    read -r -d '' READLINE_LINE < <($READLINE_LINE)
    READLINE_POINT=${#READLINE_LINE} # курсор в конец строки
}

bind -m emacs -x '"\C-j" : "readline-collect-output"'

Мне, однако, кажется, что это не очень удачный подход — предсказать, сколько строк будет в выводе не очень просто, а количество знаков, что можно ввести в командную строку, бесконечным быть не должно. Да и редактировать простыню в Ридлайне откровенно неудобно — это все-таки редактор одной строки.

Я бы подумал в сторону смены эмулятора терминала.

Вот как в том же term.el можно переключиться в построчный режим (C-c C-j), любым удобным способом вернуться на любую строчку выше — будь она вводом или выводом, на месте ее изменить и нажать на ввод.