Я делаю 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идет до конца очереди и т. д.
bashinvi, вы можете использовать,dWчтобы удалить их