私はMac OS Xでoh-my-zshとhomebrew zsh 4.3.12を使用しています。最近奇妙な問題を発見しました。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
答え1
問題はzstyle
for matcher リストにあります。
以下を追加すると.zshrc
問題が解決します。
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'e:|[._-]=* e:|=*' 'l:|=* e:|=*'
e:
(デフォルトではなく)r:
文字列の最後まで一致するように強制します。
オプションの詳細については、以下で確認できます。ZSH:完全一致制御文書
答え2
カーソルがどこに置かれたのか見ましたか?すべてのファイルは .R で終わるため、可能な提案が自動的に追加されます。
オートコンプリート機能は、Tshepangが説明したように「Both Ends」を使用します。
.R 名前のないファイルをこのフォルダに入れると、.R ビットが消えたことを確認できます。
正直なところ、オートコンプリートには、実際にはブラインドディレクトリの仮定の代わりに「完成」する何かが必要です。
答え3
Gertはおそらくこの問題を解決するのに最適な人でしょう。ただし、ファイルリスト(breakdowns.Rとeventloop.R)が不完全な理由は、これらのファイルが現在の作業ディレクトリで実行可能とマークされている唯一のファイルであると考えられます。 「ls -l」を使用してこれを確認し、rwxなどの権限を表示できます。 PATH に「./」またはそのディレクトリが明示的に存在しない場合、その 2 つのファイルもそこにないと予想されます。
8 -rwxr--r-- 1 userbob groupbob 4420 May 28 15:55 filebob.R