Очистити команду з терміналу в OS X


24

Скажіть, я набрав команду в терміналі 'mv * .jpg .. \ photos' і, коли я набираю інформацію, я більше не хочу виконувати цю команду. Я хочу просто видалити весь вислів. Я не хочу очищати весь екран або видаляти історію башів, я просто хочу перервати поточний рядок і стерти його.

Чи є комбінація клавіш або мені потрібно фактично видалити кожен символ?

Відповіді:


36

Якщо припустити, що ви в баші, використовуйте Ctrl+ U.


Спасибі! що це зробило. Чи є десь задокументований список форматів комбінацій клавіатур?
Пол Олександр


2
Це працювало і для мене в zshell.
LandonSchropp

1
Це працює лише в тому випадку, якщо ваш курсор знаходиться в кінці рядка. У тих випадках, коли ваш курсор на початку, вам потрібно використовувати CTRL-K
Jarrod Nettles

Як ви це спричиняєте в сценарії?
Джоні

7

Багато програм, які чекають, коли ви введете командний рядок, а потім виконаєте цей рядок, включаючи bash, значте Ctrl+, Cщоб означати "Скасувати поточну задачу та повернутися до основного рядка".

Кілька програм, включаючи bash, беруть Ctrl+ U( Очистити команду з терміналу в OS X ), щоб означати «стерти початок рядка до курсору» (або «стерти весь рядок»).

В основному, помітні відмінності між Ctrl+ Cі Ctrl+ Uвключають:

  • Ви можете скасувати Ctrl+ U, але не Ctrl+ C.
  • Ctrl+ Uзберігає частину рядка після курсору, якщо така є.
  • Ctrl+ Uстирає порушений текст з екрану; Ctrl+ Cпоказує новий рядок під поточним рядком.

Іноді потрібно зупинити введення команди, але ввести її в історію оболонки, щоб запустити її пізніше. Корисна хитрість - поставити #на початку рядка та виконати його: оскільки тепер це коментар, він нічого не зробить. У bash є одноклавішний ярлик: Alt+ #.


2

Існує readlineфункція, яка, ймовірно, не пов'язана з натисканням клавіші, що називає kill-whole-lineце вбиттям всієї лінії, на відміну від лише вбиття частини перед курсором ( unix-line-discardяка дещо помилкова і пов'язана з Ctrl- u).

Ви можете зв’язати це з будь-яким доступним натисканням клавіш. Мені подобається ShiftAlt- Uоскільки це пов’язана функція. Це натискання клавіші може бути пов'язане з тим, do-lowercase-versionщо означає, що він робить все, що робить не змінена версія (у цьому випадку upcase-word). Оскільки для цього нам не потрібні два клавіші, давайте скористаємося цією.

Ви можете спробувати його в командному рядку, створивши прив'язку таким чином:

bind '"\eU":kill-whole-line'

або зробіть його стійким, додавши цей рядок у свій ~/.inputrcфайл:

"\eU":kill-whole-line

Щоб скасувати Ctrl- uабо ShiftAlt- U(або будь-яку операцію, яку можна скасувати), натисніть Ctrl- Shift- _(підкреслення) або Ctrl- x Ctrl- u(два натискання клавіш). Або ви можете вставити назад те, що ви вбили, натиснувши Ctrl- yщо можна повторити, якщо ви хочете отримати кілька копій цього тексту.

До речі, якщо ви хочете вбити текст з курсору до кінця рядка, ви можете натиснути Ctrl- k. Тож замість того, щоб робити прив'язку, описану вище, ви можете вбити цілу лінію, натиснувши Ctrl- u Ctrl- k. Тільки частина, вбита другим із цих натискань клавіш, буде збережена в буфері вбивства, але ви все одно можете скасувати двічі, щоб відновити їх обидва.

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