Переход к предыдущей строке многострочной команды

При редактировании многострочных команд, с экранированными символами новой строки, я не могу перемещаться вверх по линиям.

Например, предположим, что я вхожу в echo \ one one line, затем нажимаю Enter , а затем я хочу отредактировать echo \ часть команды. Нажатие кнопки « Вверх» не возвращается к первой командной строке.

Это работает для длинных команд, которые переносятся, но не с экранированными символами новой строки:

 _physical_up_line() { zle backward-char -n $COLUMNS } _physical_down_line() { zle forward-char -n $COLUMNS } zle -N physical-up-line _physical_up_line zle -N physical-down-line _physical_down_line bindkey -M vicmd "R" physical-up-line bindkey -M vicmd "N" physical-down-line 

  • ESC-q не работает в tmux с zsh
  • Безопасно ли удалить каталог .oh-my-zsh?
  • Автозаполнение оболочки очень медленное после форматирования частичного диска
  • Параметр _path_files и compadd ignore-files
  • Можно ли использовать два символа (например, tm) в режиме вставки в zsh для привязки команды?
  • zsh: команда map для массива
  • применить темы zsh вручную
  • zsh - полностью расширяет двоичный путь на вкладке <tab>
  • 2 Solutions collect form web for “Переход к предыдущей строке многострочной команды”

    Когда вы нажимаете Enter (команда accept-line ), текущая строка анализируется и выполняется по расписанию. Если строка синтаксически неполна (например, echo \ или for x in foo ), она не выполняется, но она уже сохранена. Вы можете видеть, что zsh находится в этом состоянии, потому что он показывает приглашение PS2 вместо обычного PS1 .

    Насколько я знаю, нет встроенного способа редактирования таких сохраненных строк. Это должно выполняться, сохраняя текущую строку без ее выполнения и ссылаясь на предыдущую строку истории для редактирования.

    Самый простой способ получить предыдущую строку – убедиться, что текущая строка не завершена (например, введите \ в конце), примите ее (нажмите Enter ), затем отмените ее (нажмите Ctrl + C ). Затем вы можете вызвать всю сохраненную команду как одну строку истории в виде одного многострочного буфера, нажав « Вверх» .

    Предполагая, что вы используете по умолчанию emacs keybindings, попробуйте использовать Alt + Enter вместо простого Enter, чтобы запланировать линию для выполнения.
    Для меня, когда линии добавляются таким образом, я могу легко перемещаться вверх и вниз по этим линиям. например, когда в командной строке zsh:

     % cat << EOF<ALT-ENTER> first line<ALT-ENTER> second line<ALT-ENTER> thi ^ pressing <UP> moves up a line like you would expect 
    Interesting Posts

    меньше команды, застрявшей в прямой прокрутке

    Как tcp-keepalive работает в ssh?

    Добавить в файл1 по различиям в конкретном столбце между двумя файлами

    Как настроить файл syslog.conf для записи сообщений iptables в отдельный файл?

    Как сохранить пользовательский PS1 в режиме суперпользователя?

    Регулярное выражение в одинарных кавычках теряют свою ценность?

    Ожидание до того, как SSH-туннель (ssh -w) настроен до запуска команды

    Email Отправлено через root@domain.com, несмотря на изменение / etc / aliases

    Как создать ISO настраиваемой операционной системы Linux таким образом, чтобы я мог использовать ISO для установки на другие системы?

    grep –exclude не исключает мой файл

    Ошибка установки «ia32-libs» для запуска ADB и Fastboot Linux Mint 16 «Петра»

    аудит linux повторяет USER_ACCT CRED_ACQ LOGIN USER_START USER_END под cron

    Преобразование идентичных файлов в hardlinks

    Как исправить мой дисплей после того, как Atom полностью сломал его?

    Включить суперпользователя при входе в систему с другим пользователем

    Linux и Unix - лучшая ОС в мире.