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は、より限定された機能セットを使用し、期待してください。