私は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
編集:現在どのディレクトリにあるかに関係なく動作します。
答え2
このディレクティブを次に追加できます~/.zshrc
。
setopt autocd
cd
また、入力しなくてもディレクトリを変更できるという有益な副作用もあります。 :)