私が行うとき、次の種類のエイリアスを設定する方法はありますか?
cd some/directory
vim .zshrc
うんvim ~/.zshrc
?
答え1
間違った質問をしているので、答えは思ったよりはるかに簡単です。
実際に意味するのが、「~/.zshrc
現在の作業ディレクトリに関係なく、エイリアスを編集できるエイリアスを作成するにはどうすればよいですか?」なら、答えは簡単です。
alias zshconfig="vim ~/.zshrc"
この例は自分自身から来ており、頻繁に~/.zshrc
使用しています。
より良いオプションが提案されましたおめでとうございます以下のコメントでは次のようになります。
alias zshrc="vim ~/.zshrc"
つまり、ファイル名またはファイル名パスにエイリアスを指定しないでください。どちらのシナリオも可能ですが、後で問題を引き起こす可能性がある予測不能な副作用がある可能性があります。@マイケルホーマー指摘した。
$EDITOR
しかし、これで最初の選択肢が何であるかがわかったので、特定のファイルへの呼び出しにエイリアスを追加するだけvim
ですvim
。 (コンテキストから離れて使用される可能性が低い特殊な文字列の特定のコマンドと引数の組み合わせのエイリアスを指定する方が安全です。)
しかし、より一般的には、2つの文字シーケンスを最適化することを心配するのではなく、むしろ入力に慣れるべきであることを示唆してい~/
ます。続行する... Eddie Van Halenがスケールを練習するのと同じように、左の指を突き出してください。 (これを行うと、子指でキーを押すのvim
に慣れる必要があるので、慣れるのに役立ちます!)Esc
タイピング技術が向上するにつれて、そのシーケンスのマッスルメモリが得られ~/
、これはホームディレクトリ内のファイルを参照するときにその文字シーケンスを確実に入力するのに役立ちます。誤ってではなく、意図的にすばやく入力します。
エイリアスに依存することの欠点は、家庭用コンピュータの速度をいくら上げても、クライアントのプライベートssh
サブネット上のいくつかのリモートDockerコンテナに移動し、すべてのエイリアスが消えたことを発見する必要があるときに速度が遅くなることです。
答え2
私は本当に理解していません。しかし、そうです。コマンドに別の名前やいくつかのデフォルト引数を指定するよりも複雑な操作を実行するため、エイリアスではなく関数が必要です。
function vim {
if [[ $# -eq 1 && $1 == .zshrc && ! -e .zshrc ]]; then
set -- ~/.zshrc
fi
command vim "$@"
}
説明: を実行すると、vim
この関数が呼び出されます。最後の行でcommand vim …
外部コマンドを呼び出し、"$@"
関数に渡されたパラメータを渡します。その間に引数が1つだけあり、その引数が正しい文字列であり、.zshrc
現在のディレクトリに呼び出しファイルがない場合、.zshrc
コマンドラインはで置き換えられます~/.zshrc
。これらの条件が要件と正確に一致しない場合は、調整してください。 。
答え3
おそらくzshをシェルとして使用しているでしょう。「グローバルエイリアス」機能がありますこれにより、次のことができます。
% alias -g .zshrc='~/.zshrc'
% echo .zshrc
/home/mwh/.zshrc
それは、どこかに.zshrc
コマンドラインに単語が表示されると、通常どおり~/.zshrc
チルダに置き換えられ、展開されます。独自のシェルは「単語」である必要があるため、長い名前の部分文字列の場合は拡張されません。これはすべてのコマンドに適用されます。
グローバルエイリアスはどこでも自動的に拡張されるため、rm .zshrc
別のディレクトリで実行でき、独自のドットファイルをターゲットにするため、悪名高い問題です。これは、定義された機能を含むシェルの内部機能にも適用されます。この場合、問題が発生する可能性はほとんどないようですが、可能性があることを念頭に置いてください。を使用して、現在のディレクトリにあるファイルの名前を具体的に指定したり、引用符で囲まれた./.zshrc
リテラル文字列を取得したりできます。\.zshrc