В Bash или ZSH есть противоположность команде `clear`?

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

Предыстория этого заключается в том, что я пытаюсь сопоставить ключ в vi-режиме bash/zsh для отображения предыдущей истории или предыдущего вывода, но без потери текущей команды, которую я редактирую.

2 ответа

Навигация по истории вывода не является задачей оболочки (Bash/ZSH); они не ведут запись результатов, которые произвели команды в них. История вывода обрабатывается терминалом, который сегодня обычно является либо терминалом GNOME, либо xterm. Оба из них поддерживают по крайней мере эти ярлыки, как упомянуто @kos:

  • Shift-Page Up для перемещения не более одного $LINES вверх
  • Shift-Page Down для перемещения не более одного $LINES вниз

В bash вы можете привязать ключ к команде и, например, вывести список истории команд, находясь в процессе ввода новой команды. После выполнения команды ваша строка ввода восстанавливается в том месте, где вы изначально находились.

Например, дать команду

bind -x '"\C-a": history'

Тогда контроль будет сбрасывать историю.

Для постоянства добавьте в ваш файл ~/.inputc

"\C-a": history

Вы можете заменить history по любой команде.


В zsh у вас есть встроенный механизм, который помещает текущий входной буфер в стек и позволяет вам давать новую команду. Когда он заканчивается, предыдущий входной буфер восстанавливается. Итак, вы печатаете: escape q history возврат

Если вы предпочитаете, вы можете установить привязку виджета zsh, чтобы показать историю под текущим вводимым буфером ввода. Например, для контроля снова (в вашем ~/.zshrc):

zle -N myhistory  
myhistory(){zle -M "$(history)";}
bindkey '^a' myhistory

Для сохранения истории вывода вы можете использовать screen -L который хранит журнал всех выходных данных в файле, который вы можете привязать с привязкой, как указано выше. Вы можете фильтровать через cat -e или что-то, так как файл включает все escape-последовательности терминала.

Другие вопросы по тегам