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

Попробуйте установить vim. Это поведение по умолчанию vi. Если у вас установлен vim, лучший способ получить поведение vim - touch .vimrc в вашем домашнем каталоге.

1
задан 26 September 2017 в 00:15

2 ответа

Это зависит от того, используете ли вы режим редактирования 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
45
ответ дан 25 May 2018 в 00:26
  • 1
    Если вы хотите мнемонику, K означает kill (строка, начинающаяся с позиции курсора). – Gregor Botero 17 March 2013 в 19:53
  • 2
    В режиме команды vi D работает так же, как d$ – glenn jackman 17 March 2013 в 22:54
  • 3
    +1 для фактического написания right ответа и объяснения, что shellopts могут его изменить. – TC1 18 March 2013 в 02:57
  • 4
    & GT; & GT; Благодарю. Кажется, что я использую vi, поэтому CTRL + K делает трюк. - Адам Матан Адам, тогда это режим emacs, в котором вы находитесь, а не vi. – catch22 20 March 2013 в 01:14
  • 5
    В Kubuntu работают одноименные (консоль), Ctrl + K и ESC Shift + D. ESC d удаляет часть строки (возможно, до ';'). (Ввод $ после этого просто отправляет $ на консоль.) Я пытался выяснить, как это сделать довольно долго. Благодаря! – Joe 21 March 2013 в 00:56

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

bash

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

zsh

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

Другая соответствующая информация

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

# bash
bind -p

# zsh
bindkey
2
ответ дан 25 May 2018 в 00:26
  • 1
    Я смущен. Для Bash не должно быть "^k" для Control + K? – wjandrea 26 September 2017 в 00:18
  • 2
    Извините, это мое личное обязательство. Я бы поставил обязательную привязку по умолчанию, но мне не понравилось синтаксис bash. Поскольку вы упомянули, что это должно быть, я взял ваше слово и отредактировал свой пост. – Sridhar-Sarnobat 26 September 2017 в 00:30
  • 3
    О, хорошо. Я сам не знаком с этим, но только что проверил, и это должно быть "\C-k" – wjandrea 26 September 2017 в 00:41

Другие вопросы по тегам:

Похожие вопросы: