Як очистити / видалити поточний рядок у терміналі?


795

Якщо я використовую термінал і набираю рядок тексту для команди, чи є гаряча клавіша чи будь-який спосіб очистити / видалити цей рядок?

Наприклад, якщо мій поточний рядок / команда чимось справді довгий, як:

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

Чи є гаряча клавіша чи команда для переходу від вищезазначеного до:

>

?

Зазвичай я натискаю клавішу, і якщо мій поточний рядок є абсолютно новою в історії, це очистить її. Але якщо я перейду історію моїх команд через ключ і почну редагувати або використовувати ці команди, змінитимуть підказку лише на наступну нову команду в історії, тому вона не працює тут, якщо я не натискаю кілька разів.




Відповіді:


1492

Ви можете використовувати Ctrl+U щоб очистити до початку.

Ви можете використовувати Ctrl+, Wщоб видалити лише слово.

Ви також можете використовувати Ctrl + Cдля скасування.

Якщо ви хочете зберегти історію, ви можете використовувати Alt+ Shift+# щоб зробити коментар.


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


231
Рядок, видалений Ctrl-U, також можна відкликати з Ctrl-Y.
кекс

65
Вут? Так здорово, дякуємо keks & kev, ⌃ + U - видалити все перед курсором, ⌃ + K - видалити все після курсору, ⌃ + A - перейти на початок рядка. Тож технічно ⌃ + C є найкращим рішенням питання
Бінаріан

3
Alt-Shift- # не працює? думав, що інші роблять. Alt-Shift- # друкує символ a> на терміналі
tgkprog

49
Запропоновано навчати мене <kbd>...</kbd>тегу для показу клавіш в SO.
Samveen

11
@ LưuVĩnhPhúc ESC- це власний ключ модифікатора в bash. Він використовується для таких речей, як скасування навігації по історії ( CTRL+ r) або заміна останніх двох слів за курсором ( ESC+)t ).
noobish

578

Просто узагальнити всі відповіді:

  • Очистити рядок: Ви можете використовувати 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

6
note ctrl-k видаляє все між курсором та кінцем рядка.
Пітер Берг

6
Видалити наступне слово:Alt + D
cnlevy

1
Alt+ D не працює ось чому я не включив його :(
J4cK

1
CTRL + Lочищає екран, але зберігає те, що було введено у поточному командному рядку.
Азірафале

1
Ctrl + Alt + >переміщується до кінця історії введення, що ідеально, коли ви хочете скасувати пошук історії.
астасіяк

165

У мене є повний список ярликів:

  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

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

у ваш файл Readit init (умовно) ~/.inputrc ).

Різні зауваження:

  • Щоб уникнути випадкового повторного призначення ключової послідовності, яка вже використовується для чогось іншого, ви можете перевірити всі свої прив’язки bind -P. Перевірте, чи не пропонується зв'язування з

    bind -P | grep '\\e\\C-k'
  • Ім'я файлу Readit init береться зі змінної оболонки INPUTRC. Якщо воно не встановлено, типовим є ~/.inputrcабо (якщо такого не існує) /etc/inputrc. Зауважте, що якщо у вас є ~/.inputrc, /etc/inputrcто буде проігноровано.
  • Щоб завантажити файл init Readline, ви можете використовувати Ctrl+ X Ctrl+ R.
  • Посилання на відповідні ручні розділи:

2

Для того, щоб очистити всю лінію (2 різні способи):

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.