Zsh 구성 - VSCode에 대한 행 탐색 [닫기]

Zsh 구성 - VSCode에 대한 행 탐색 [닫기]

제가 실제로 이런 질문을 한 적이 있어요뿌리그리고스택 오버플로. 저는 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)

관련 정보