1日に約5回、「cd」を意味するときに「vi」と入力し、viでディレクトリを開くことになります。それは私をNUTSにしている。「vi +ディレクトリ」と入力し、それを自動的に「cd +ディレクトリ」に変更する方法を検出する方法があるはずです。考え?
1日に約5回、「cd」を意味するときに「vi」と入力し、viでディレクトリを開くことになります。それは私をNUTSにしている。「vi +ディレクトリ」と入力し、それを自動的に「cd +ディレクトリ」に変更する方法を検出する方法があるはずです。考え?
回答:
あなたが呼び出すという仮定で vi
ディレクトリを最後の引数としてと:
vi() {
if [[ -d ${!#} ]]; then
cd "$@"
else
command vi "$@"
fi
}
rm
へのエイリアスrm -i
です。一般的に、問題を解決する最善の方法は、ユーザーを回避するのではなく、ユーザーを解決することだと思います。
rm
するrm -i
あなたにいくつかの過去のトラブルかもしれませんが、保存(おそらくます)...将来的にはより多くのトラブルにあなたを得るかもしれません
vi
質問で...
${!#}
最終引数を間接的に参照し、command
このインスタンスで関数の再帰を回避するためにのみ必要です。
@ChrisDownの答えとは別に、別のアプローチがあります:ディレクトリをバイパスする
このアプローチでは、次のことができます。
vi ./*
また、サブディレクトリが含まれている場合でも、現在のディレクトリ内のすべてのファイルでviを起動し、それらのサブディレクトリをバイパスします
vi() {
for arg do
[ -d "$arg" ] || set -- "$@" "$arg"
shift
done
[ "$#" -gt 0 ] && command vi "$@"
}
これは、ディレクトリではない引数に対してviを実行するだけです。したがって、「cd」に「vi」を使用することを教えません。
そして、vi somedirectory(つまり、cdの代わりにviを誤って入力した)の場合は、viを呼び出しません。ただし、その場合は自動的にcdされないため、cdと入力する必要があることを覚えています^^
引数リストを変更するために「互換性のある」方法を使用したため、多くのプラットフォームに移植可能です。
command something
"something"というエイリアスまたは関数の代わりに、 "something"コマンド(つまり、$ PATHを使用して見つかった "something"の最初の出現)を開始します。 \something
エイリアスのみをバイパスしますが、存在する場合は関数を使用します(そして、ここでは、関数 "vi"が自分自身を呼び出してループすることを意味します)。
1つの解決策は、使用をcd
完全に停止することです。入れてshopt -s autocd
、あなたに.bashrc
またはsetopt autocd
あなたに.zshrc
。次に、別のディレクトリに変更するには、コマンドなしでディレクトリ名を入力します。
入力することを忘れないでください vi
ファイルを編集する場合はすることを。
単一のコマンドでディレクトリに変更するか、ファイルを編集する場合は、それを関数にすることができます。
vi () {
if [ $# -eq 1 ] && [ -d "$1" ]; then
cd -- "$1"
else
command vi "$@"
fi
}
Unixでエイリアス機能を使用します。cdをviにエイリアスすると、問題は解決します。
vi
、エイリアスを手動で上書きしないと使用できないことを意味し、非常に望ましくないと思われます。
vim
代わりに適切なものを使用することを教えます。
vim
。利用できない場合vi
は、より限定された機能セットを使用し、期待してください。