Какой ярлык для удаления слова «вперед» в терминале Unix?


14

Я делаю Ctrl+Wв терминале Mac, чтобы удалить слово (удаляет, где курсор находится в начале слова)

Как мне поступить наоборот - удаляет откуда курсор до конца слова?

Ответы:


14

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

Для оболочки с режимом редактирования командной строки Emacs ( set -o emacsв некоторых оболочках) используйте Alt+D(по какой-либо причине это не работает в macOS, но печатает символ , используйте Escdвместо этого).

Для оболочки с режимом редактирования командной строки Vi ( set -o viв некоторых оболочках) используйте Escdw(это также работает на macOS).


Только в zsh Meta-D удаляет слово того же типа, что и Ctrl-W (пустые слова). В режиме bashin vi, вы можете использовать, dWчтобы удалить их
Стефан

1
@ StéphaneChazelas Да, у них (двух ключевых комбо) разные взгляды на то, что составляет «слово».
Кусалананда

Вы можете проверить «использовать опцию как мета» в настройках терминала, чтобы заставить его работать.
Юзеф Легень

Оба Esc + D и Alt + D работают в терминале xfce4 0.6.3 .
neverMind9

1

Для дисциплины линии tty ^Wудаляет предыдущее слово с пробелом .

В viредакторе в режиме вставки, ^Wудаляет в обратном направлении до начала первой последовательности alnums или не-alnums (на foo-+-bar.. baz, он сначала удаляет baz, а затем .., а затем bar, а затем -+-, потом foo).

В emacsредакторе ^Wудаляет с позиции курсора до метки (той, которую вы установили Ctrl+Space).

Некоторые линейные редакторы, такие как readline(используется bash, gdb...), zle(используется zsh), pdkshв viрежиме, ведут себя как viв этом отношении, а в emacsрежиме ведут себя как дисциплина линии tty (не emacs).

libedit(используется BSD оболочки или ( по желанию) dash), tcsh, AT & T ksh, в emacsрежиме, ведет себя как , emacsгде ^Wудаления к отметке (первоначально в начале буфера).

Чтобы удалить слово вперед, в viредакторе вы должны сделать это в командном ( обычном ) режиме, dwчтобы удалить начало следующей последовательности чисел или других знаков (или конец строки) и dWудалить в следующая последовательность незаполненных (кулон ^Wдисциплины линии tty).

В emacsредакторе строк Meta-Dудалите до конца следующую последовательность символов alnum. Операторы движения слова ( Meta-B, Meta-F) ведут себя аналогично.

Редакторы командной строки в viрежиме ведут себя как vi, но в emacsрежиме у вас есть две основные школы: tcshшкола и kshшкола.

kshШкола ( readline, ksh, yash) ведет себя в основном как emacs( fishповедение «s немного отличается в том , как он относится к не-, не цифрой , буквой, пробельные символы в обоих emacsи viрежиме).

В tcshшколе ( tcsh, libedit, zsh), движение слова основано на пробельные разделителях слов так согласуются с TTY дисциплины линии - й ^Wв этом отношении.

В zsh, поведение настраивается с различными стилями слова для всех виджетов движения слова.

Для readline, вы можете получить tcshшколу (и есть Meta-Dудалить такие же слова , как это Ctrl-Wделает), добавив к вашему ~/.inputrc:

set keymap vi-move
"\e[EMACS~": emacs-editing-mode
set keymap emacs
"\e[VI~": vi-movement-mode
"\ed": "\e[VI~dW\e[EMACS~"
"\ef": vi-fWord
"\eb": vi-bWord

Или, с другой стороны, выровняйте ^Wдругие виджеты движения слов (ведите себя как Meta-Backscape) с помощью:

set keymap emacs
"\C-W": backward-kill-word

Что касается того, что Metaключ, посмотрите там .


-1

В Linux попробуйте Ctrl+kудалить, откуда курсор находится до конца слова.

Ниже перечислены несколько других ярлыков (работающих в Linux):

  1. Ctrl+e -> берет курсор в конце слова.
  2. Ctrl+t -> Поменяйте местами алфавиты.
  3. Ctrl+y -> добавляет постфикс "чч" к текущему слову.
  4. Ctrl+u -> Удаляет всю строку.
  5. Ctrl+o -> Работает так же, как клавиша Enter.
  6. Ctrl+p -> Работает так же, как кнопка со стрелкой вверх.
  7. Ctrl+a -> Подводит курсор к начальной позиции команды.
  8. Ctrl+d -> Закрытие терминала.
  9. Ctrl+f -> Перемещает курсор вперед на один символ.
  10. Ctrl+h -> Работает так же, как клавиша Backspace.
  11. Ctrl+j -> Работает так же, как клавиша Enter.
  12. Ctrl+m -> Работает так же, как клавиша Enter.
  13. Ctrl+b-> Работает так же, как клавиша со стрелкой вправо. 14 Ctrl+4 -> Удаляет слово

3
Ctrl+kудаляет до конца строки . Ctrl+uудаляет всю строку (если курсор находится в конце). Ctrl+dотправляет EOF. Ctrl+eидет до конца очереди и т. д.
Кусалананда

Ctrl + y используется для вставки или восстановления последней сохраненной в буфере обмена информации, в вашем случае это было, вероятно, «чч». Как вы думаете, почему в мире появилось бы сочетание клавиш для пост-фиксации данного слова с буквами "чч"? Как это будет полезно?
bmcentee148
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.