Как сохранить текущую команду на zsh?

Я набираю команду, я помню, что мне нужно что-то проверить, если я нажму Ctrl + U, команда исчезнет, ​​и я могу ввести что-то еще, но тогда команда, которую я печатала, не находится в истории.

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

Ctrl + Y вставляет последний отредактированный вами фрагмент (с Ctrl + U , Ctrl + K , Ctrl + W и т. Д.).

Взгляните на командную push-line ZLE. Эта команда подталкивает текущее содержимое строки в стек буфера и очищает строку. Затем вы можете ввести другую команду, и когда ZLE снова запустится, строка будет вытащена из стека буферов в буфер строки.

 prompt@world$ cp abc /mnt/usr/bin # The user presses Esc-q prompt@world$ # The line is cleared prompt@world$ mount -v /dev/sdb1 /mnt # And the user can enter another command mount: /dev/sdb1 mounted on /mnt prompt@world$ cp abc /mnt/usr/bin # The first command is popped off of the stack # as soon as ZLE comes back. 

По умолчанию эта команда привязана к Alt / Esc q в режиме emacs. Вы можете связать эту команду с другим ключом с bindkey команды bindkey . Например, чтобы привязать его к Alt / Esc v , добавьте bindkey '^[V' push-line в ваш zshrc .

Вы ищете команду push-line , которая по умолчанию привязана к Ctrl + Q и Esc Q. Эта команда очищает ввод и позволяет ввести другую команду; после выполнения или отмены этой команды предыдущая команда возвращается для редактирования.

С помощью многострочной команды push-line только очищает текущую строку и удерживает другие строки во входном буфере. Существует еще один командный push-input который очищает весь входной буфер, не привязанный к какому-либо ключу по умолчанию.

Я использую обертку вокруг этой команды. Я набираю Ctrl + Z для «приостановки» команды, которую я набираю, и введите другую команду. После того, как я запустил эту команду (или прервал ее с помощью Ctrl + C ), приостановленная команда возвращается для выпуска (даже помня о позиции курсора). В качестве дополнительного удобства, если командная строка пуста, когда я набираю Ctrl + Z , ключ вызывает вместо этого встроенный bg (так что двойной Ctrl + Z отправляет бегущую команду непосредственно на задний план).

 fancy-ctrl-z () { emulate -LR zsh if [[ $#BUFFER -eq 0 ]]; then bg zle redisplay else zle push-input fi } zle -N fancy-ctrl-z bindkey '^Z' fancy-ctrl-z 

Низкотехнологичный метод, который работает в любой оболочке, состоит в том, чтобы добавить # в начале текущей строки и нажать Enter .