Я делаю Ctrl+W
в терминале Mac, чтобы удалить слово (удаляет, где курсор находится в начале слова)
Как мне поступить наоборот - удаляет откуда курсор до конца слова?
Я делаю Ctrl+W
в терминале Mac, чтобы удалить слово (удаляет, где курсор находится в начале слова)
Как мне поступить наоборот - удаляет откуда курсор до конца слова?
Ответы:
Это зависит от вашей оболочки и ее активного режима редактирования командной строки.
Для оболочки с режимом редактирования командной строки Emacs ( set -o emacs
в некоторых оболочках) используйте Alt+D(по какой-либо причине это не работает в macOS, но печатает символ ∂
, используйте Escdвместо этого).
Для оболочки с режимом редактирования командной строки Vi ( set -o vi
в некоторых оболочках) используйте Escdw(это также работает на macOS).
Для дисциплины линии 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ключ, посмотрите там .
В Linux попробуйте Ctrl+k
удалить, откуда курсор находится до конца слова.
Ниже перечислены несколько других ярлыков (работающих в Linux):
Ctrl+e
-> берет курсор в конце слова.Ctrl+t
-> Поменяйте местами алфавиты.Ctrl+y
-> добавляет постфикс "чч" к текущему слову.Ctrl+u
-> Удаляет всю строку.Ctrl+o
-> Работает так же, как клавиша Enter.Ctrl+p
-> Работает так же, как кнопка со стрелкой вверх.Ctrl+a
-> Подводит курсор к начальной позиции команды.Ctrl+d
-> Закрытие терминала.Ctrl+f
-> Перемещает курсор вперед на один символ.Ctrl+h
-> Работает так же, как клавиша Backspace.Ctrl+j
-> Работает так же, как клавиша Enter.Ctrl+m
-> Работает так же, как клавиша Enter.Ctrl+b
-> Работает так же, как клавиша со стрелкой вправо. 14 Ctrl+4
-> Удаляет словоCtrl+k
удаляет до конца строки . Ctrl+u
удаляет всю строку (если курсор находится в конце). Ctrl+d
отправляет EOF. Ctrl+e
идет до конца очереди и т. д.
bash
invi
, вы можете использовать,dW
чтобы удалить их