質問: どのzsh機能を使用していますか? 私はターミナルで多くの作業を行っているので、選択したシェルzshについて多くのことを学びました。仕事での生産性を大幅に向上させるために、zshのどの機能を使用していますか?私のお気に入りの1つは、マルチディレクトリオートコンプリートです。したがって、cd /fo{tab}/ba{tab}/ba{tab}と入力する代わりに、cd /fo/ba/ba{tab}を実行して、その数のキーストロークを節約できます。
回答: 私の知る限り、bashができないことは続けます。 派手な完成。はい、bashにはその一部がありますが、zshはより多くのコマンドを認識しており、多くの場合、より正確であり、より多くの構成の可能性があります。 _**_ glob、たとえば_**/foo_は、サブディレクトリ内のfooというファイルを再帰的に検索します。 (また、_***/foo_もシンボリックリンクに従います。)長いfindコマンドの代わりに2文字(一部のファイル名にスペースや引用符などの特殊文字が含まれている場合、これは正しく理解できません)。 あまり頻繁ではありませんが、foo*(*)(_foo*_のようですが、実行可能ファイルのみを保持します)、foo(.)(ディレクトリではなく通常のファイルのみ)、foo(-@)(ぶら下がっているシンボリックリンクのみ)、foo*(m-5)(過去5分間に変更されたファイルのみ)、foo*(om[1])(最後に変更されたファイル)など。 autocd:コマンドとしてディレクトリ名を入力すると、ディレクトリ名が変わります(設定方法に応じて、cdまたはpushd)。 cdコマンドは3文字長すぎます!痛みを感じずに30秒以上bashを使用することはできません。また、次のような1文字の関数もいくつかあります。 function-{ if [[$#-eq 0]];次に cd "$ oldpwd" else 組み込み-"$ @" fi } zmvビルトイン、および エイリアスzcp = 'noglob zmv -c' エイリアスzln = 'noglob zmv -l' エイリアスzmv = 'noglob zmv' 私がそれにいる間、noglobビルトイン。 precmdおよびpreexecフック関数:preexecを使用して端末のタイトルを設定し、実行中のコマンドを含め、precmdを使用してコマンドを出口で置き換えますコード。何かのようなもの term_title_base = '@%l:%1〜' preexec(){ print -nr $ '\ e] 2;' "$ {(%)term_title_base} $ * "'$\a' } precmd(){ print -nr $ '\ e] 2;'" $ {(%)term_title_base}($?) "'$\a' } ctrl + z: 空のコマンドラインでbgを実行します(そのため、ctrl + z ctrl + zはプログラムを一時停止し、すぐにバックグラウンドで再開します)。 空でないコマンドラインで、現在のコマンドエディションを一時停止します。別のコマンドを入力して、2番目のコマンドラインが終了したら、最初のコマンドを編集します。 これは次の関数を使用します: fancy-ctrl-z(){ if [[$#buffer -eq 0]]; then bg zle redisplay else zle push-input fi } zle -n fancy -ctrl-z bindkey '^ z'fancy-ctrl-z 最も重要な非完了関連オプション:_setopt append_history autocd extended_glob no_match_