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 사진을 참조하세요.
두 번째 명령의 경우 "file1"은 폴더가 아니므로 "file1"과 "*" 사이에 공백이 추가됩니다.
"file1"과 "*" 사이에 공백을 추가하고 싶지 않습니다. 이름이 "file1"로 시작하는 파일을 삭제하고 싶을 때 r, m, Space, -, r, f, Space, Tab, Tab, Tab, Tab, *, Enter
순차적으로 누르면 명령이 될 것이라고 생각 rm -rf file1*
하지만 명령은 실제로는 rm -rf file1 *
때로는 추가된 공간을 인식하지 못한 채 "y"를 눌러 실수로 모든 폴더와 파일을 삭제할 수도 있습니다. 아래 gif 사진을 참조하세요.
실수로 많은 폴더와 파일을 삭제했습니다.
나는 성공하지 못한 채 공간을 제거하기 위해 며칠 동안 인터넷 검색을 해왔습니다.
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 사진을 참조하세요.
나는 또한 많은 다른 구성을 시도했습니다.
미리 감사드립니다.
답변1
*
당신은 에 추가할 수 있습니다$ZLE_REMOVE_SUFFIX_CHARS
.
ZLE_REMOVE_SUFFIX_CHARS=$' \t\n;&|*'
(변수가 설정되지 않은 경우 기본적으로 사용되는 값에 추가됩니다.)
따라서 삽입된 접미사를 완성 /
하거나공간*
선택완료 후 입력하시면 삭제됩니다.