vi
내가 입력 한 디렉토리에서 tab(두 번) 이것은 나에게 제공됩니다
user$ vi
CMakeFiles/ global/ libs/
그리고 ls
2 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