4

Я хочу, чтобы ctrl-W на Zsh останавливался, когда он встречает символ "/". В моем файле .zshrc есть следующее, но оно не останавливается на "/". Что здесь происходит?

default-backward-delete-word () {
  local WORDCHARS="*?_[]~=/&;!#$%^(){}<>"
  zle backward-delete-word
}
zle -N default-backward-delete-word
bindkey '^W' default-backward-delete-word

1 ответ1

6

Проблема в том, что / является частью ваших WORDCHARS .

Согласно zshparam(1):

WORDCHARS <S>

Список не алфавитно-цифровых символов, которые редактор строки считает частью слова.

Так что если вы хотите, чтобы zsh рассматривал / как разделитель слов, он не должен быть в WORDCHARS . Я бы также предложил использовать одинарные кавычки вместо двойных кавычек при его определении, особенно если в нем есть $ , что может привести к нежелательным расширениям.

local WORDCHARS='*?_[]~=&;!#$%^(){}<>'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .