Який ярлик для видалення слова "вперед" в терміналі 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 (порожні відмежовані). У bashв viрежимі, ви можете використовувати , dWщоб видалити ті
Stéphane Chazelas

1
@ StéphaneChazelas Так, вони (дві ключові комбо) мають різний погляд на те, що є "словом".
Kusalananda

Ви можете перевірити "параметр використання як мета" в налаштуваннях клавіатури терміналу, щоб він працював.
Юзеф Легень

І Esc + D, і Alt + D працюють в xfce4-терміналі 0.6.3 .
neverMind9

1

Для дисципліни tty line ^Wвилучає попереднє слово з обмеженим пробілом .

У viредакторі у режимі вставки ^Wвидаляє назад до початку першої послідовності alnums або non-alnums (увімкнено foo-+-bar.. baz, спочатку видаляє baz, потім .., потім bar, потім -+-, потім foo).

У emacsредакторі ^Wвидаляє з позиції курсору позначку (ту, яку ви встановили Ctrl+Space).

Деякі редактори рядків, такі як readline(використовуються bash, gdb...), zle(використовуються zsh), pdkshколи перебувають у viрежимі, поводяться як viу цьому відношенні, так і коли в emacsрежимі ведуть себе як дисципліна в рядку (не emacs).

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

Щоб видалити слово вперед, в viредакторі ви зробите це в командному ( звичайному ) режимі, dwщоб видалити до початку наступної послідовності alnums або non-alnums (або кінець рядка) та dWвидалити до наступна послідовність непробірок (кулон ^Wдисципліни tty line).

У emacsредакторі рядків Meta-Dбуде видалено до кінця наступну послідовність символів випускних номерів. Слово оператори руху ( 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 -> додає постфікс "hh" до поточного слова.
  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 використовується для вставки або вималювання останнього, що ви зберегли у буфері обміну, у вашому випадку це було, мабуть, "hh." Чому в світі, на вашу думку, була би клавішна комбінація, щоб після виправити задане слово літерами "hh"? Чим це було б корисно?
bmcentee148
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.