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
問題は、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 にあります。
カーソルがどこにあるかに気づきましたか?すべてのファイルは.Rで終わるため、考えられる提案が自動的に追加されます。
オートコンプリートは、Tshepangによって説明されているように「両端」を使用しています。
.R名のないファイルをこのフォルダーにドロップしてみると、.Rビットが消えていることがわかります。
正直なところ、オートコンプリートには、ブラインドディレクトリの仮定ではなく、実際に「完了する」ための何かが必要です。
Gertは修正に適している可能性があります。ただし、ファイルのリスト(breakdowns.Rおよびeventloop.R)の性質が不完全である理由は、これらのファイルが現在の作業ディレクトリで実行可能としてマークされている唯一のファイルであるためだと思います。これは「ls-l」で確認でき、rwxなどの権限を確認できます。 PATHに明示的に「./」またはそのディレクトリがない場合は、これら2つのファイルも表示されないと思います。
8 -rwxr--r-- 1 userbob groupbob 4420 May 28 15:55 filebob.R