История изменений
Исправление 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), любым удобным способом вернуться на любую строчку выше — будь она вводом или выводом, на месте ее изменить и нажать на ввод.