Как очистить / удалить текущую строку в терминале?


798

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

Например, если моя текущая строка / команда очень длинная, например:

> git log --graph --all --blah..uh oh i want to cancel and clear this line <cursor is here now>

Есть ли горячая клавиша или команда, чтобы перейти от вышеупомянутого к:

>

?

Обычно я нажимаю клавишу, и если моя текущая линия является новой в истории, это очистит ее. Но если я просматриваю свою историю команд с помощью клавиши и начинаю редактирование или использую эти команды, изменит только подсказку на следующую новейшую команду в истории, поэтому она не будет работать, если я не нажму несколько раз.




1

Ответы:


1496

Вы можете использовать Ctrl+, Uчтобы очистить до начала.

Вы можете использовать Ctrl+, Wчтобы удалить только слово.

Вы также можете использовать Ctrl+ Cдля отмены.

Если вы хотите сохранить историю, вы можете использовать Alt+ Shift+, #чтобы сделать ее комментарием.


Шпаргалка по режиму редактирования Bash Emacs


231
Строка, удаленная с помощью Ctrl-U, также вызывается с помощью Ctrl-Y.
keks

65
Wut? Спасибо, keks & kev,, + U - удалить все до Курсора, ⌃ + K - удалить все после Курсора, ⌃ + A - перейти в начало строки. Технически, ⌃ + C - лучшее решение для Вопроса
Бинар

3
Alt-Shift- # не работает? думал, что другие делают. Alt-Shift- # печатает символ> на терминале
tgkprog

49
Проголосовал за то, что научил меня <kbd>...</kbd>тегу показывать ключи в SO.
Самвин

11
@ LưuVĩnhPhúc ESC- это собственная клавиша-модификатор в bash. Он используется для отмены навигации по истории ( CTRL+ r) или для замены двух последних слов за курсором ( ESC+ t).
Noobish

579

Просто суммируем все ответы:

  • Очистить строку: вы можете использовать Ctrl+, Uчтобы очистить до начала.
  • Очистить строку: Ctrl+ E Ctrl+, Uчтобы стереть текущую строку в терминале
  • Очистить строку: Ctrl+ A Ctrl+, Kчтобы стереть текущую строку в терминале
  • Отмена текущей команды / строки: Ctrl+ C.
  • Напомним удаленную команду: Ctrl+ Y(затем Alt+ Y)
  • Перейти к началу строки: Ctrl+A
  • Перейти к концу строки: Ctrl+E
  • Удалите передовые слова, например, если вы находитесь в середине команды: Ctrl+K
  • Убрать символы слева, до начала слова: Ctrl+W
  • Чтобы очистить всю командную строку: Ctrl+L
  • Переключение между началом строки и текущей позицией курсора: Ctrl+XX

7
Примечание Ctrl-K удаляет все между курсором и концом строки.
Питер Берг

6
Удалить следующее слово:Alt + D
cnlevy

1
Alt+ D не работает, поэтому я не включил его :(
J4cK

1
CTRL + Lочищает экран, но сохраняет то, что было введено в текущей командной строке.
Азирафале

1
Ctrl + Alt + >перемещается в конец истории ввода, которая идеально подходит для отмены поиска в истории.
Астасиак

166

У меня есть полный список ярлыков:

  1. Ctrl+ a Переместить курсор в начало строки
  2. Ctrl+ e Переместить курсор в конец строки
  3. Ctrl+ b Переместиться назад на один символ
  4. Alt+ b Вернуться на одно слово назад
  5. Ctrl+ f Двигаться вперед на один символ
  6. Alt+ f Двигаться вперед на одно слово
  7. Ctrl+ d Удалить текущий персонаж
  8. Ctrl+ w Вырезать последнее слово
  9. Ctrl+ k Вырезать все после курсора
  10. Alt+ d Вырезать слово после курсора
  11. Alt+ w Вырезать слово перед курсором
  12. Ctrl+ y Вставьте последнюю удаленную команду
  13. Ctrl+ _ Отменить
  14. Ctrl+ u Вырезать все перед курсором
  15. Ctrl+ xxПереключение между первой и текущей позицией
  16. Ctrl+ l Очистить терминал
  17. Ctrl+ c Отменить команду
  18. Ctrl+ r Команда поиска в истории - введите поисковый запрос
  19. Ctrl+ j Завершить поиск в текущей записи истории
  20. Ctrl+ g Отменить поиск и восстановить исходную строку
  21. Ctrl+ n Следующая команда из истории
  22. Ctrl+ p предыдущая команда из истории

5
Извините, но я предоставил все полезные сочетания клавиш, в которых 7,8,9,10,11,14,16,17 - это удаляемые / удаляемые сочетания клавиш, которые мы можем использовать согласно требованию.
tharunkumar

2
Следует отметить, что CTRL+ L(16.) сохраняет содержимое текущей командной строки.
Азирафале

на окнах кажется, что вам нужно использовать Ctrl + Shift + A, чтобы перейти к началу строки
Gandalf458

3
Отсутствует Ctrl+ h: удалить символ перед курсором
peflorencio

22

Ctrl+ A, Ctrl+ Kчтобы стереть текущую строку в терминале. Затем вы можете вспомнить его с помощью Ctrl+, Yесли вам нужно.


16

или если вы используете режим vi, нажмите, Escа затемcc

чтобы вернуть то, что вы только что стерли, Escа потом p:)


5
Вы можете включить режим vi с помощью echo 'set editing-mode vi' >> ~/.inputrc. Также работает в таких местах, как запросы интерпретатора Python и некоторые клиенты SQL
dwurf 13.10.14

11

Я не уверен, что вам это нравится, но я использую Ctrl+ A(чтобы начать строку) и Ctrl+ K(чтобы удалить строку). Я был знаком с этими командами из emacs и случайно их выяснил.



6
  • Ctrl+ u: перейти к началу вашей строки в кольцевой буфер
  • Ctrl+ k: перейти до конца вашей строки в кольцевой буфер
  • Ctrl+ w: переместить символы и (несколько) слов влево от курсора в кольцевой буфер

  • Ctrl+ y: вставьте последнюю запись из вашего кольцевого буфера, а затем вы можете использовать Alt+ yдля вращения через ваш кольцевой буфер. Нажмите несколько раз, чтобы перейти к «предыдущей» записи в кольцевом буфере.


4

CTRL+ Rи начните вводить для поиска предыдущих команд в истории. Покажет полные строки.
CTRL+ Rснова к циклу.



2

Добавить в список:

В режиме Emacs нажатие Esc, а затем Rудаление всей строки.

Я не знаю почему, просто случайно нашел его. Возможно, он не используется для удаления строки, но имеет тот же эффект. Если кто-то знает, скажите, пожалуйста, спасибо :)

Работает в Bash, но не работает в Fish.


1
Это команда revert-linereadline: «Отменить все изменения, сделанные в этой строке». По умолчанию он связан с M-r(Meta-R), который может быть как Alt-R, так и Esc R. Это означает, что он на самом деле не удаляет строку, только когда она была пустой с самого начала; Если вы прокрутите историю команд назад и измените команду, а затем выполните команду, revert-lineона вернется к той команде, которой она была изначально, и не удалит строку.
Бенджамин В.

2

Чтобы удалить всю строку независимо от того, где находится курсор, вы можете использовать kill-whole-lineкоманду, но по умолчанию она не связана. Это может быть связано, например, с Ctrl+ Alt+ K, вставив

"\e\C-k": kill-whole-line

в ваш файл инициализации Readline (условно ~/.inputrc).

Различные замечания:

  • Чтобы избежать случайного переназначения последовательности клавиш, которая уже используется для чего-то другого, вы можете проверить все свои привязки с помощью bind -P. Проверьте предложенное связывание с

    bind -P | grep '\\e\\C-k'
  • Имя файла инициализации Readline взято из переменной оболочки INPUTRC. Если оно не установлено, по умолчанию используется значение ( ~/.inputrcили (если оно не существует) /etc/inputrc. Обратите внимание, что если у вас есть ~/.inputrc, /etc/inputrcбудут игнорироваться.
  • Чтобы перезагрузить файл инициализации Readline, вы можете использовать Ctrl+ X Ctrl+ R.
  • Ссылки на соответствующие разделы руководства:

2

Для очистки всей линии (2 разных способа):

  • Home, Ctrl+K
  • End, Ctrl+U

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.