Назад | Перейти на главную страницу

Отменить вызов командной строки оболочки

Нажатие стрелки key up вспомнит команду, которую вы использовали ранее в оболочке.

Но что бы вы сделали, если бы на полпути пролистали историю своих команд и решили, что хотите ввести новую команду самостоятельно?

Нажатие стрелки key down все это было бы слишком хлопотно. Нажатие ESC не очищает команду, как в Windows (я исхожу из фона Windows).

Итак, как немедленно очистить команду? Я пока искал в Google, но нашел только CTRL+C можно отменить и перейти на новую строку. Это единственный способ или есть лучший способ, например ESC в винде это понятно прямо? Спасибо.

Вы хотите kill-whole-line, но в bash это не привязано по умолчанию. backward-kill-line (CtrlИкс Backspace) и unix-line-discard (CtrlU) оба стираются от текущей точки до начала строки, поэтому просто перейдите к концу строки и используйте любой из них.

Для bash:

Вам нужна последовательность нажатия клавиш, привязанная к end-of-history действие. По умолчанию, согласно §8.4.2 Руководства пользователя Bash, это Мета+>, где Мета является ключом-модификатором "meta" в вашем терминале или программе-эмуляторе терминала. (Обратитесь к документации и настройкам вашего терминала, чтобы выбрать подходящий вариант.)

end-of-history переносит вас прямо до конца списка истории, т. е. обратно к строке, которую вы изначально вводили перед тем, как вернуться в историю.

Для оболочки Z:

Вам нужна последовательность нажатия клавиш, привязанная к end-of-buffer-or-history виджет. По умолчанию, согласно §18.6.2 Справочного руководства Z Shell, это Esc> в emacs раскладка. (Обратите внимание, что это конкретно префикс Escне Мета, даже если ваш эмулятор терминала может отображать Мета к префиксу Esc.)

end-of-buffer-or-history переносит вас в конец списка истории, только если вы находитесь в конце буфера при его вызове. Поэтому, если вы находитесь в середине буфера, вам придется дважды нажать последовательность клавиш: один раз, чтобы добраться до конца буфера, и второй раз, чтобы добраться до конца истории.

Помимо CTRL + C что вы упомянули. Я нашел нажим ESC а потом Backspace удалит строку (за исключением некоторых символов) до тех пор, пока не появится не алфавитный символ.

Если вы используете set -o vi, вы можете просто сделать следующее:

^C