Bash: удаление с курсора до конца строки с помощью сочетания клавиш

75

Рассмотрим следующее приглашение bash, где ^ обозначает местоположение приглашения:

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

Предположим, что я хочу снова зафиксировать ту же ошибку с другим сообщением о фиксации. Есть ли способ удалить текст из позиции курсора до конца строки?

    
задан Adam Matan 17.03.2013 в 09:28
источник

3 ответа

118

Используйте Ctrl + K для удаления из курсора в конец строки.

Используйте Ctrl + U для удаления из курсора в начало строки.

    
ответ дан user128285 17.03.2013 в 09:37
источник
45

Это зависит от того, используете ли вы режим редактирования 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
    
ответ дан Kevin Bowen 17.03.2013 в 10:07
2

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

баш

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

ЗШ

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

Другая релевантная информация

Чтобы получить список привязок клавиш:

# bash
bind -p

# zsh
bindkey
    
ответ дан Sridhar-Sarnobat 25.09.2017 в 22:54