Bash: видаліть курсор до кінця рядка за допомогою комбінації клавіш


91

Розглянемо наступний рядок bash, де ^позначається місце підказки:

$ git commit -am "[bug 123456] Do this and that with the bug"
                               ^

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

Відповіді:


145

Використовуйте Ctrl+, Kщоб видалити курсор до кінця рядка.

Використовуйте Ctrl+, Uщоб видалити курсор до початку рядка.


Яку ключову комбінацію слід поставити?
ShooShoSha

@ShooShoSha, Спробуйте Shift + Insert
user128285

які значення K і U, я не можу згадати цього наступного тижня, якщо я не знаю значень, як їх запам'ятати?
workplaylifecycle

2
@hylepo Dunno, але мій мнемонічний Brexit - the UK leaves Europe- U видаляє до початку, а K до кінця.
Snowcrash

47

Це залежить від того, ви використовуєте режим редагування vi ( set -o vi) або emacs ( set -o emacs) у своїй оболонці.

За замовчуванням ваша оболонка зазвичай налаштована на режим редагування emacs.

  • У режимі emacs видалення до кінця рядка може бути здійснено за допомогою команди ctrl- k.

  • Якщо, однак, у вашій командній оболонці ви використовуєте режим редагування vi, такий же результат можна досягти, ввівши Esc(що переведе вас у командний режим), а потім d- $(якщо ви хочете видалити весь рядок, введіть dd).

Якщо ви не впевнені, який режим редагування ви використовуєте в своїй оболонці, введіть команду set -oз командного рядка, і ви зможете визначити, який режим редагування ви зараз використовуєте:

set -o
...snip...
emacs           on
...snip...
vi              off

Щоб переключити режим редагування командного рядка, просто введіть або:

set -o vi

або

set -o emacs

4
Якщо ви хочете мнемонічне значення, це Kозначає , що введено вбивство (рядок, що починається з позиції курсору).
Грегор Ботеро

5
У командному режимі vi Dпрацює так само, якd$
glenn jackman

3
+1 - насправді написати правильну відповідь і пояснити, що шеф-файли можуть змінити її.
TC1

1
>> Дякую Здається, я використовую vi, тому CTRL + K виконує трюк. - Адам Матан Адам, значить, це режим emacs, в якому ви перебуваєте, а не vi.
ловити22

1
У Kubuntu oneiric (konsole) працюють Ctrl + K і ESC Shift + D. ESC d видаляє частину рядка (можливо, до ';'). (Введення $ після цього просто надсилає $ до консолі.) Я намагаюся розібратися, як це зробити досить довго. Дякую!
Джо

3

Якщо ви знайомі лише з одним із Zsh та Bash, ось такі еквівалентні ключові прив'язки, які вам (можливо) знадобляться:

баш

bind '"\C-k"':kill-line

зш

bindkey "\C-k"      vi-kill-eol

Інша відповідна інформація

Щоб отримати список основних прив'язок:

# bash
bind -p

# zsh
bindkey

Я збентежений. Для Bash, чи не повинен це бути "^k" Control + K?
wjandrea

Вибачте, це моя особиста прив’язка. Я б поставив прив'язку за замовчуванням, але це не було зручно з синтаксисом bash. Оскільки ви згадали, що це має бути, я прийняв ваше слово і відредагував свою публікацію.
Шрідхар Сарнобат

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