Як кажучи, як очистити поточний вхід?


172

Припустимо, в bash ви почнете писати команду типу:

$ rm -rf /foo/bar/really/long/path/here

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

Що я робив останнім часом - це передчуття відлуння та додавання вхідних даних у лапки (Ctrl + A echo ",, Ctrl + E, "), а потім натискання клавіші enter. Чи є швидший шлях?


Або, припустимо, ви вставили команду і зрозуміли, що це був неправильний однолінійний. Backspace стає дійсно старим після приблизно 20 символів!
bgStack15

<kbd> Ctrl </kbd> - <kbd> C </kbd>, якщо ви хочете зберегти історію, зверніться до stackoverflow.com/a/9679852/6521116
Kris Roofe

Відповіді:


286
  1. Натисніть Ctrl- Uщоб видалити все перед курсором. Видалена команда буде зберігатися в буфері. Натисніть Ctrl-, Yщоб вставити видалену команду.

    (Необов’язково: Натисніть Endабо Ctrl-, Eщоб спочатку перейти до кінця вводу.)

  2. Крім того, натисніть Ctrl- Cщоб скасувати те, що ви набираєте.


28
Є застереження: Ctrl-C знищить поточний запит, запустить нову підказку та встановить код повернення на 1.
user716468

14
Не звикайте до цього, використовуйте Ctrl-U. Ctrl-C не так вже й погано в bash, але якщо у вас є, наприклад, запит клієнта mysql, Ctrl-C відключиться від сервера, що насправді дратує.
Крістіан

1
Зауважте, що у багатьох системах також є символ терміналу 'kill', який вбиває вхід досі. Часто це контроль-X. Ви можете перевірити stty -a. І це буде працювати з будь-якою програмою, яка не активно модифікує управління терміналом.
Джонатан Леффлер

Ctrl-A, а потім Ctrl-K також працює. Текст "убитого" зберігається, і ви можете вставити його, використовуючи Ctrl-Y. Насправді ці натискання клавіш ідуть з бібліотеки ліній для читання: cnswww.cns.cwru.edu/php/chet/readline/rluserman.html .. тому ви можете їх знайти в будь-якому інструменті, в якому користувальницький інтерфейс використовує бібліотеку (власне Emacs, bash, і т. д.). Ви можете налаштувати його поведінку, відредагувавши .inputrc файл (див. Посилання вище, щоб отримати докладнішу інформацію).
ркачач

93

Спробуйте Ctrl+ U. Це очищає рядок введення.


7
Дякую, я майже прийняв це як відповідь. Але я виявив, що очищує лише вхід перед курсором. У деяких випадках я перебуваю в середині редагування команди, тому я б краще запам'ятав Ctrl + C замість Ctrl + U, як просто "відкинути поточний ввід".
користувач85509


21

Ctrl- U, Ctrl-K робить фокус.

Ctrl- Uвидаляє все від початку рядка до курсору, Ctrl- Kвидаляє все від курсору до кінця рядка. (Іноді корисно використовувати лише одну з них.)


13

Для цього є два варіанти

ctrl+c - це очищає всю лінію, незалежно від того, де знаходиться курсор.

ctrl+ u- це очищення рядка від положення курсору до початку.


2
"Вважайте, що використання Cu (або Ce, а потім Cu) збереже те, що ви очистите, у буфері, щоб потім ви могли вставити його згодом за допомогою Cy." Маркісісме простішою єдиною командою є ctrl + _. stackoverflow.com/questions/1056440/… відповів Джон Куг - тільки що почався stackoverflow не має достатньо балів, щоб додати коментар до вас у відповідь.
vks

9

Приємний ярлик - натискання Esc#. Він додасть #символ (таким чином зробивши рядок коментарем), а потім натисніть клавішу Enter. Якщо ви вирішите, що вам все-таки потрібна команда, ви все одно маєте її в своїй історії :)


3
У більшості терміналів це також те саме, що Alt + #, що робить його одним (акордованим) натисканням клавіші.
Dolda2000

Просте, але розумне рішення, і я думаю, що це більш зручний для користувача спосіб скасування команди. Саме те, що я шукав :)
Cas

9

Якщо натиснути Escплюс Backspaceу bash, усе очистить до позиції курсора.

(У Cygwin це очистить введення до наступного слова. Слова розділені пробілами, підкресленнями, ...)


3

Подумайте, що використання Ctrl- U(або Ctrl- Eі тоді Ctrl- U) збереже те, що ви очистили, у буфері, щоб потім можна вставити його згодом, використовуючи Ctrl- Y.


3

Якщо ви використовуєте Bash у режимі vi (встановіть його set -o vi), натисніть, Escщоб перейти у звичайний режим vi, і введіть, ddщоб видалити поточний рядок!


3

Це розширення відповіді на трикотаж яка зберігає рядок в історії консолі, префіксуючи хеш. Подолання недоліків буфера обміну, таких як випадкове перезапис або неможливість перегляду лінії відрізу для довідки.

Рядок коментарів та повернення нового підказка

Використовуйте будь-яку клавішу швидкого доступу

  • Esc,#
  • Alt+#

Хеш-символ #буде попередньо висунутий до рядка, таким чином перетворивши всю лінію в коментар. Він також поверне нове підказку, як ніби користувач натиснув на нього. напр

$ #rm -rf /foo/bar/really/long/path/here
$

Отримайте коментований рядок

Щоб відновити старий рядок з історії консолі, скористайтеся одним із наступних ярликів:

  • Up
  • Ctrl+p

Повторюйте комбінацію клавіш, поки не з’явиться потрібний рядок.


Швидке видалення префікса хеша

Щоб видалити хеш- #префікс рядка, доступні кілька різних варіантів:

Видаліть перший символ і негайно виконайте команду:

  • Esc, 1, Esc,#
  • Alt+ -, Alt+#

Перемістіть курсор для запуску та видалення першого символу, не виконуючи команди:

  • Home, Delete
  • Ctrl+ a, Ctrl+d

2

Щоб видалити поточний рядок, спробуйте:

Ctrl- X, Ctrl-U

Як альтернативу ви можете використовувати:

Esc-D

що вимагає в ~ / .inputrc:

"\ed": kill-whole-line 

див .: http://codesnippets.joyent.com/posts/show/1690


Якщо ви хочете, щоб лише клавіша втечі очистити весь рядок, додайте "\e\e": kill-whole-line(має бути подвійне натискання клавіші esc)
binaryfunt
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.