1日に5回程度、「cd」を意味するときに「vi」と入力すると、viでディレクトリが開きます。それは私にナッツを作っています。 「vi +ディレクトリ」と入力すると、それを検出して自動的に「cd +ディレクトリ」に変更する方法があるはずです。考え?
最後の引数としてディレクトリを指定してvi
を呼び出すことを想定しています。
vi() {
if [[ -d ${!#} ]]; then
cd "$@"
else
command vi "$@"
fi
}
@ChrisDownの回答とは別に、ここに別のアプローチがあります。ディレクトリをバイパスする
このアプローチでは、次のことができます。
vi ./*
そして、サブディレクトリが含まれていても、現在のディレクトリにあるすべてのファイルでviを起動し、それらのサブディレクトリをバイパスします
vi() {
for arg do
[ -d "$arg" ] || set -- "$@" "$arg"
shift
done
[ "$#" -gt 0 ] && command vi "$@"
}
これは、ディレクトリではない任意の引数でviを実行するだけです...したがって、「vi」を「cd」に使用することは教えません;)
また、次のようにした場合、viは呼び出されません。visomedirectory(つまり、cdではなくviの入力ミス)。ただし、その場合は自動的にcdされないため、cdと入力する必要があることを覚えておいてください^^
「互換性のある」方法を使用して引数リストを変更し、多くのプラットフォームに移植できるようにしました。
1つの解決策は、cd
の使用を完全に停止することです。 shopt -s autocd
あなたの.bashrc
またはsetopt autocd
あなたの.zshrc
。次に、別のディレクトリに移動するには、コマンドを入力せずにディレクトリ名を入力します。
ファイルを編集する場合は、必ずvi
と入力してください。
単一のコマンドでディレクトリに変更するか、ファイルを編集する必要がある場合は、それを関数にすることができます。
vi () {
if [ $# -eq 1 ] && [ -d "$1" ]; then
cd -- "$1"
else
command vi "$@"
fi
}