zsh/oh-my-zsh: 폴더가 아닌 파일에 후행 공백을 추가하지 않고 탭 완성을 만드는 방법은 무엇입니까?

zsh/oh-my-zsh: 폴더가 아닌 파일에 후행 공백을 추가하지 않고 탭 완성을 만드는 방법은 무엇입니까?

zsh와 oh-my-zsh가 설치되어 있습니다.

기본적으로 zsh는 탭 완성을 사용할 때 폴더가 아닌 파일에 후행 공백을 추가합니다.

test_files시연하기 위해 cd폴더에 다음 폴더/파일을 만들고 다음으로 편집했습니다 test_files.

test_files
├── dir1
│   └── file4
├── dir2
│   └── file5
├── file1
├── file11
└── file111

먼저 순차적으로 눌러 첫 번째 명령을 l, s, Space, Tab, Tab, Tab, *, Enter받습니다 . ls dir2/*둘째, l, s, Space, Tab, Tab, Tab, Tab, *, Enter순서대로 눌러 ls file1 *두 번째 명령을 받습니다. 아래 gif 사진을 참조하세요.

zsh ls 명령

두 번째 명령의 경우 "file1"은 폴더가 아니므로 "file1"과 "*" 사이에 공백이 추가됩니다.

"file1"과 "*" 사이에 공백을 추가하고 싶지 않습니다. 이름이 "file1"로 시작하는 파일을 삭제하고 싶을 때 r, m, Space, -, r, f, Space, Tab, Tab, Tab, Tab, *, Enter순차적으로 누르면 명령이 될 것이라고 생각 rm -rf file1*하지만 명령은 실제로는 rm -rf file1 *때로는 추가된 공간을 인식하지 못한 채 "y"를 눌러 실수로 모든 폴더와 파일을 삭제할 수도 있습니다. 아래 gif 사진을 참조하세요.

zsh rm 명령

실수로 많은 폴더와 파일을 삭제했습니다.

나는 성공하지 못한 채 공간을 제거하기 위해 며칠 동안 인터넷 검색을 해왔습니다.

zsh 문서에서 내가 원하는 것과 매우 유사한 추가 공간을 발견하고 시도해 보았지만 zstyle ':completion:*' add-space false아무것도 바뀌지 않는 것 같았습니다.

나는 다음 줄을 내 코드에 넣으려고 시도했지만 .zshrc여전히 해당 공간이 추가됩니다.

autoload -U compinit && compinit
zmodload -i zsh/complist
zstyle ':completion:*' menu select
zstyle ':completion:*' add-space false

을 제거하면 공백이 추가되지 않지만 탭 키를 눌러도 커서가 폴더/파일을 탐색하지 않으므로 구성을 zstyle ':completion:*' menu select유지하고 싶습니다 . menu select아래 gif 사진을 참조하세요.

메뉴 선택 없이 zsh rm 명령

나는 또한 많은 다른 구성을 시도했습니다.

미리 감사드립니다.

답변1

*당신은 에 추가할 수 있습니다$ZLE_REMOVE_SUFFIX_CHARS.

ZLE_REMOVE_SUFFIX_CHARS=$' \t\n;&|*'

(변수가 설정되지 않은 경우 기본적으로 사용되는 값에 추가됩니다.)

따라서 삽입된 접미사를 완성 /하거나공간*선택완료 후 입력하시면 삭제됩니다.

관련 정보