제가 실제로 이런 질문을 한 적이 있어요뿌리그리고스택 오버플로. 저는 VSCode를 사용하고 있으며 좋은 동작을 하고 있습니다. Alt줄 끝에서 +를 실행하면 다음 위치에서 중지됩니다.→
foo/bar/test_wait_what
^ ^ ^ ^
Delete+를 하면 , , 등이 Alt삭제됩니다 .what
_
wait
나는 거의 동일한 작업을 수행하고 싶습니다 zsh
(이미 사용하고 있는 "oh-my-zsh" 없이 zimfw
). 기본적으로는 _
단어 구분자로 간주하지 않는 것 같고, 에 대해서는 /
동시에 제거합니다.
비슷한 질문을 몇 개 발견했고 사용을 제안했지만 select-word-style bash
삭제 시 bash는 내가 원하는 방식으로 작동하지 않습니다.
zsh
또한, 제가 직접 답변을 찾을 수 있는 방법에 대한 제안 사항이 있으시면 주저하지 마시고 명확한 정보나 예시 등을 찾기가 어렵습니다 .
답변1
(또는 단어의 일부로 간주되기를 원하지 않는 다른 문자) 를 _
제거 할 수 있습니다 ./
$WORDCHARS
성격) 바인딩할 단어 또는 단어가 아닌 문자 시퀀스를 제거하는 위젯을 정의합니다.Alt+Del
delete-word-or-non-word() {
emulate -L zsh # restore default zsh options locally to the function
set -o extendedglob # extended glob needed for the ## operator (locally)
# ${var##pattern} ksh operator to remove the longest string that matches
# the pattern off the start of $var. Here applied to $RBUFFER which in a
# zle widget is the part of the line editor buffer to the right of the
# cursor. [[:WORD:]] matches a *word* character (alnums + $WORDCHARS),
# ## is *one or more* (like ERE's + or ksh's +(...))
RBUFFER=${RBUFFER##([[:WORD:]]##|[^[:WORD:]]##)}
}
zle -N delete-word-or-non-word # define a new zle widget using that function
# bind that new widget
bindkey '\ed' delete-word-or-non-word # Alt+D
bindkey '^[[3;3~' delete-word-or-non-word # Alt+Del on xterm at least
WORDCHARS=${WORDCHARS//[\/_]} # remove _ and / from WORDCHARS
# using the ${var//pattern/replacement} ksh
# operator
WORDCHARS= # or make it empty so that the only *word*
# characters are alphanumerics
(이것은 필요하지 않습니다 select-word-style
)