육Bash에서는 디렉토리만 완료하세요.

육Bash에서는 디렉토리만 완료하세요.

vi내가 입력 한 디렉토리에서 tab(두 번) 이것은 나에게 제공됩니다

user$ vi 
CMakeFiles/ global/     libs/

그리고 ls2 tab초가 나에게 주어졌어

user$ ls 
! core.log CMakeFiles/ global/     libs/ _jni/

(노트:ls의 별칭은 "ls -Ah --color=auto"입니다., _jni는 심볼릭 링크이며 숨겨진 파일이 없습니다. )

vi탭 완료 중에는 파일이 표시되지 않고 디렉토리만 표시되는 것 같습니다 . 왜 이런 일이 발생합니까? vi와 동일하게 동작하게 하려면 어떻게 해야 합니까 ls? SE에서 기사를 검색한 후 ~/.vimrc에 다음 줄을 추가했습니다. 하지만 이 경우에는 아무 것도 하지 않는 것 같습니다.

set wildmode=longest,list,full
set wildmenu

버전 vi: VIM - Vi 개선된 버전 7.3.429
버전 ls: ls(GNU coreutils) 8.13

답변1

아치리눅스에서도 같은 문제가 발생했는데, 결국 완성 기능의 문제라는 것을 알게 되었습니다.

complete -r vim컴플리터를 제거 하는 데 사용됩니다 . (또는 bashrc에 이 줄을 넣으세요)

답변2

이 동작은 ls 명령이나 vi 바이너리와 직접적인 관련이 없습니다. 대신, 쉘의 탭 완성 기능에 의해 제어됩니다. Linux에서 bash를 사용한다면 완성을 구현하는 /etc/bash_completion방법 에 대한 전체 규칙을 이미 알고 있을 것입니다 /etc/bash_completion.d/*.

답변3

파일에서 다음과 유사한 줄을 확인하세요 /etc/bash_completion.

complete -f -X '*.@(o|so|so.!(conf)|a|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)' vi vim gvim rvim view rview rgvim rgview gview emacs xemacs sxemacs kate kwrite

쉘에서 이 명령을 실행하십시오. 또는 파일에 위 줄을 추가 /etc/bash_completion하고 다음을 실행합니다.

bash /etc/bash_completion

관련 정보