vi
私が入力したディレクトリでtab(2回)これは私に提供されます
user$ vi
CMakeFiles/ global/ libs/
そしてls
2tab秒が私に与えられた
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
ArchiLinuxでも同じ問題が発生しましたが、結局完成機能の問題であることがわかりました。
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