zshオートコンプリートディレクトリ

zshオートコンプリートディレクトリ

私はzshに最初に触れたこととよくあることの1つは、私のScriptsディレクトリにあるシェルスクリプトを実行することです。必ずしもScriptsディレクトリにあるわけではありませんが... $ HOMEにある可能性があるため、 を入力してオートコンプリートし、そこでSc<Tab>実行Scripts/したいスクリプトをオートコンプリートできます。もちろん...

ただし、zshはデフォルトでこれを実行していないようです。 orと入力すると、lsディレクトリ名が自動補完されますcd。最初にディレクトリをオートコンプリートしようとすると、まったくオートコンプリートされません。

この動作を変更する方法はありますか?

編集:私はそれを行うこと./Sc<Tab>ができ、自動的にそれを行うことがわかりました。私はオートコンプリートのために何かを入力する前に入力する必要がないことに慣れていたので、./これがzshで可能かどうかはまだ疑問に思っていますが、今は許容可能な回避策です。

ベストアンサー1

正確に要求されたものではありませんが、sを使用してスクリプトを実行します。たとえば、~/Scripts/run-stuff.sh ファイルがある場合、s run-stuff.sh と入力するとスクリプトが実行されます。また、スクリプト名のタブの完成も行います。実行しない唯一のことは、スクリプトディレクトリ内のサブディレクトリを処理することです。

# Completion for s (scripts)
_s_comp() {
    if [ $OS = "mac" ]; then
        local LS=gls;
    else
        local LS=ls;
    fi
    reply=(`$LS --ignore-backups $HOME/Scripts/`);
}

compctl -K _s_comp s

エイリアスが必要な場合があります。alias s="$HOME/Scripts

編集:現在どのディレクトリにあるかに関係なく動作します。

おすすめ記事