탭을 사용한 자동 완성은 특정 유형의 파일 이름에서 작동하지 않습니다.

탭을 사용한 자동 완성은 특정 유형의 파일 이름에서 작동하지 않습니다.

일반적으로 파일 이름의 처음 몇 글자를 입력한 후 Tab 키를 누르면 전체 파일 이름을 얻을 수 있습니다(또는 시작 문자가 같은 것이 많은 경우 조언).

그러나 특수 문자가 포함된 파일 이름에는 작동하지 않는 것 같습니다. 특히 저는 ~/.vim/viewvim을 사용하여 연 모든 파일의 접힌 위치(줄 번호)와 같은 세부 정보가 포함된 파일이 포함된 디렉토리에 있습니다. 사람들이 이전에 작업한 파일을 다시 열면 vim은 이러한 파일을 사용하여 올바른 접기 등을 통해 동일한 "보기"를 복원합니다. 이제 (적어도 내 상자에는) 이 매우 유용한 파일이 가장 이상한 파일 이름을 갖는 것 같습니다. 예를 들어 ~=+temp=+test.sh=, 이러한 파일에는 =+temp=+test.sh=각각 파일에 대한 정보와 마지막 "보기"가 있습니다.~/temp/test.sh/temp/test.sh

나는 일반적으로 이 디렉토리로 가서 다음과 같은 작업을 수행한 다음 탭을 클릭할 때 ls -l ~=+tem자동 완성되기를 원합니다.~=+temp=+test.sh=

하지만 그런 일은 일어나지 않았습니다. 왜? 구현하려면 어떻게 해야 합니까?

저는 FreeBSD에서 Bash를 사용하고 있습니다. 기록을 위해 저는 이것을 zsh, csh, tcsh 및 sh(동일 OS)에서 시도했습니다. 특정 쉘에 대해서는 질문 태그를 추가하지 않았지만, 그렇게 해야 한다고 생각한다면 자유롭게 추가하세요.

답변1

내 생각에는 Bash가 =파일 이름을 완성할 때 및 이전 부분을 생략하는 것 같습니다. 아마도 .--some-file=<filename>

예를 들어, 파일 foofoofoobar존재하는 경우 을 입력하면 자동으로 접두어가 완성되고 두 파일 이름이 모두 나열됩니다.echo asdf=f<tab>foo

라는 이름의 파일을 사용하면 asdf=xyz뒤에 나오는 섹션에서 자동 완성됩니다.echo asdf=a<tab>=echo asdf=asdf\=xyz

=네, Bash를 탈출해야 합니다파일명 자동 완성 시. 이는 생성된 명령에는 문제가 되지 않지만 이러한 의미에서 쉘에는 특별한 의미가 없습니다.

반면에 파일 이름에 물결표가 있는 경우에는 문제가 되지 않을 수 있습니다. 사용자가 호출하지 않는 이상 그대로 =+temp=+test.sh=두어야 합니다 .

관련 정보