web-dev-qa-db-ja.com

エントリを非表示にしないようにタブ補完を修正するにはどうすればよいですか?

Mac OSXで自作のzsh4.3.12を使用してoh-my-zshを使用しています。私は最近、奇妙な問題に遭遇しました。 scripts/not-usedにはいくつかの.Rファイルがあります。

breakdowns.R             eventloop.R              process-largeclients.R   process-qt.R
reprocess-pinning.R      calculate-qt-error.R     generate_decision_tree.R process-net.R
process-scalingexp.R

ただし、ls scripts/not-used/ +を試してみるとTab 最初の補完はls scripts/not-used/_.Rです。ここで、_はカーソル位置を表します。押すと Tab 繰り返しますが、私はこの奇妙な完了を取得します:

$ ls scripts/not-used/.R                                                                          
breakdowns.R  eventloop.R

この醜い(間違った)振る舞いを設定解除する方法は?

設定されるオプションは次のとおりです。

alwaystoend autocd autonamedirs autopushd cdablevars completeinword
correctall extendedglob extendedhistory noflowcontrol
histexpiredupsfirst histignoredups histignorespace histreduceblanks histverify
incappendhistory
interactive login longlistjobs monitor promptsubst 
pushdignoredups pushdminus pushdsilent pushdtohome
sharehistory shinstdin zle
17
Nikola Knezevic

問題は、matcher-listのzstyleにあります。

.zshrcに以下を追加すると、修正されます。

zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'e:|[._-]=* e:|=*' 'l:|=* e:|=*'

e:(デフォルトのr:の代わりに)は、文字列の最後に一致を強制します。

オプションの詳細は ZSH:Completion Matching Control docs にあります。

1
Gert

カーソルがどこにあるかに気づきましたか?すべてのファイルは.Rで終わるため、考えられる提案が自動的に追加されます。

オートコンプリートは、Tshepangによって説明されているように「両端」を使用しています。

.R名のないファイルをこのフォルダーにドロップしてみると、.Rビットが消えていることがわかります。

正直なところ、オートコンプリートには、ブラインドディレクトリの仮定ではなく、実際に「完了する」ための何かが必要です。

0
Bee Kay

Gertは修正に適している可能性があります。ただし、ファイルのリスト(breakdowns.Rおよびeventloop.R)の性質が不完全である理由は、これらのファイルが現在の作業ディレクトリで実行可能としてマークされている唯一のファイルであるためだと思います。これは「ls-l」で確認でき、rwxなどの権限を確認できます。 PATHに明示的に「./」またはそのディレクトリがない場合は、これら2つのファイルも表示されないと思います。

 8 -rwxr--r-- 1 userbob    groupbob      4420 May 28 15:55 filebob.R
0
Voltaire