줄 끝에서 부르면 ls Dir\ A/Long\ File\ Name
죽이는 단어로 바뀌길 원합니다. to를 수정하여 제거 ls Dir\ A/
할 수 있다는 것을 알고 있지만 이스케이프된 공백을 무시하는 방법을 찾을 수 없습니다./
$WORDCHARS
답변1
내장된 위젯에 알릴 방법이 없습니다 backward-kill-word
(다음 단어가 종료됩니다).왼쪽커서)를 사용하여 이 작업을 수행할 수 있지만 직접 스크롤할 수도 있습니다.
backward-kill-word() {
# LBUFFER -- all text left of the cursor
# (z) -- split into shell words
# (A) -- force the resulting words into an array
# [-1] -- take the right-most element
# :t -- strip all path ancestors from it
# % -- remove the shortest matching substring from the right
LBUFFER=${LBUFFER%${${(zA)LBUFFER}[-1]:t}*}
zle -f kill # Tell the Zsh Line Editor that we've killed text.
}
zle -N backward-kill-word # Replace the default widget.
바꾸기 kill-word
(다음 단어 삭제)옳은커서)는 매우 유사합니다.
kill-word() {
# RBUFFER -- all text to the right of the cursor
# [1] -- take the left-most element
# :h1 -- strip all path descendants from it
# # -- remove the shortest matching substring from the left
RBUFFER=${RBUFFER#*${${(zA)RBUFFER}[1]:h1}}
zle -f kill
}
zle -N kill-word
답변2
여러 키를 입력하는 것이 괜찮다면 ^R / ^K
이전 슬래시로 돌아가서 줄 끝까지 킬 수 있습니다. 처음에 커서 뒤에 더 많은 단어가 있으면 사용할 수 있습니다 ^@ ^R / ESC-x kill-region RET
(불행히도 kill-region
기본적으로 키에 바인딩되지 않습니다. Emacs 바인딩이 ^W
제공되었으며 backward-kill-word
표준 쿠킹된 tty 바인딩과의 호환성을 위해 제공되지 않았습니다).
T/C
vi 모드에서는 명령 모드에서 시작하여 삽입 모드로 끝나면 줄 끝까지 삭제하거나 원래 커서 위치가 포함될 때까지 vT/s
삭제하는 등의 작업을 사용할 수 있습니다 .dT/s
select-word-style shell
관심이 있을 수 있습니다: 쉘 구문을 사용하여 단어 이동을 발생시킵니다.
autoload -Uz select-word-style
select-word-style shell
불행히도 슬래시가 단어의 일부이기 때문에 문제가 해결되지 않습니다. 코드를 변경하지 않고 단어의 특정 문자를 중지하기 위해 이를 악용할 수 있는 방법이 없습니다 match-words-by-style
.