ZSH 단어 끝으로 점프

ZSH 단어 끝으로 점프

나는 내가 원하는 zsh권리를 처리할 수 있도록 성공적으로 사용자 정의했습니다. WORDCHARS하지만 단어를 건너뛰거나 삭제하거나 자동 완성할 때 각 단어의 시작 부분으로 이동합니다. 대신 단어 끝으로 이동하는 것이 더 좋습니다.

예를 들어 다음 명령에서 backward-word및 를 사용하여 점프하면 커서가 아래 문자 forward-word로 표시된 위치로 점프합니다 .^

$ kubectl --context stage --namespace kube-system get pods
  ^         ^       ^       ^         ^    ^      ^   ^   ^

나는 zsh가 다음과 같이 단어 끝으로 점프하는 것을 훨씬 선호합니다.

$ kubectl --context stage --namespace kube-system get pods
  ^      ^         ^     ^           ^           ^   ^    ^

구성이 가능한가요?

답변1

여기 있습니다:

# Replace `forward-word` with `emacs-forward-word`. Problem solved.
zle -A emacs-forward-word forward-word

# For `backward-word`, it's a bit more complex. We'll have to 
# create a new widget for this.
zle -N backward-word backward-word-end
backward-word-end() {
  # Move to the beginning of the current word.
  zle .backward-word

  # If we're at the beginning of the buffer, we don't need to do 
  # anything else.
  (( CURSOR )) ||
      return
    
  # Otherwise, move to the end of the word before the current one.
  zle .backward-word
  zle .emacs-forward-word
}

이 버전의 에는 backward-word커서가 단어가 아닌 많은 문자의 오른쪽에 위치할 경우 직관적으로 너무 멀리 점프하는 것처럼 느껴질 수 있는 몇 가지 극단적인 경우가 있습니다. 그러나 위에서 제시한 테스트 사례의 경우 정확하게 작동합니다.


더 나은 단어 이동 및 사용자 정의 옵션을 보려면 내 플러그인을 확인하세요.Zsh 편집.

관련 정보