私はターミナルで多くの仕事をしているので、選択したシェルであるzshについて多くを学びました。zshのどの機能を使用して、仕事をより生産的にするのですか?私のお気に入りの1つは、マルチディレクトリオートコンプリートです。それで、入力する代わりに、cd /fo{tab}/ba{tab}/ba{tab}私はちょうどcd /fo/ba/ba{tab}多くのキーストロークを実行して保存できます!
私はターミナルで多くの仕事をしているので、選択したシェルであるzshについて多くを学びました。zshのどの機能を使用して、仕事をより生産的にするのですか?私のお気に入りの1つは、マルチディレクトリオートコンプリートです。それで、入力する代わりに、cd /fo{tab}/ba{tab}/ba{tab}私はちょうどcd /fo/ba/ba{tab}多くのキーストロークを実行して保存できます!
回答:
私の知る限り、bashができないことを続けます。
豪華な完成。はい、bashにはいくつかありますが、zshはより多くのコマンドを知っており、多くの場合より正確で、より多くの構成の可能性があります。
**グロブ、例えば、**/fooと呼ばれるファイルを探しますfoo再帰的にサブディレクトリに。(また***/foo、シンボリックリンクにも続きます。)長いfindコマンドの代わりに2文字(一部のファイル名にスペースや引用符などの特殊文字が含まれている場合、正しい文字を取得するのは困難です)。
以下のようには少ないが、グロブ修飾子foo*(*)(のようなfoo*、しかし、唯一の実行可能ファイルを保持)、 foo(.)(のみ通常のファイルではなくディレクトリ)、 foo(-@)
(のみシンボリックリンクをダングリング)、 foo*(m-5)(最後の5分に変更されたファイル)、 foo*(om[1])(最近変更されたファイル)など
autocd:コマンドの変更時にディレクトリ名を入力します(cdまたはpushd構成方法に応じて)。cdコマンドが長すぎる3つの文字です!痛みを感じずにbashを30秒以上使用することはできません。また、次のようないくつかの単一文字関数もあります。
関数 - {
if [[$#-eq 0]]; それから
cd "$ OLDPWD"
他に
組み込み-「$ @」
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'
}
bg(Ctrl + Z Ctrl + Zはプログラムを一時停止し、バックグラウンドですぐに再開します)。fancy-ctrl-z(){
if [[$#BUFFER -eq 0]]; それから
bg
zle再表示
他に
zleプッシュ入力
fi
}
zle -N fancy-ctrl-z
bindkey '^ Z' fancy-ctrl-z
setopt append_history autocd extended_glob no_matchファイルとディレクトリ以外のものを自動補完するzshの機能。
たとえば、gitパッケージをインストールすると、git-sh {tab}が表示されます:
-gitコマンド- shortlog-gitログ出力を要約します show-branch-ブランチとそのコミットを表示します show-index-パックIDXファイルの内容を表示します
他の人が述べたように、zshのオートコンプリートは優れています。
あまり手間をかけずに、カスタムコマンドの独自のオートコンプリートをセットアップすることもできます。完全なユーザー名をfingerの引数としてタブにするには:
# ~/.zshrc
function userlist {
reply=(`users | tr ' ' '\n' |sort -u `);}
compctl -K userlist finger
set COMPLETE_ALIASES
私が設定したい他のオプション:
# turn on spelling correction
setopt correct
# don't save duplicates in command history
setopt histignoredups
# don't allow accidental file over-writes
setopt noclobber
pushdとpopdも非常に便利です。
# Always pushd when changing directory
setopt auto_pushd
# Have pushd with no arguments act like `pushd $HOME'.
setopt PUSHD_TO_HOME
厄介なことに、ホームキーと終了キーは、他のシェルでのようにzshでデフォルトで機能しませんが、これを修正できます。
# Make home and end keys work.
[[ -z "$terminfo[khome]" ]] || bindkey -M emacs "$terminfo[khome]" beginning-of-line
[[ -z "$terminfo[kend]" ]] || bindkey -M emacs "$terminfo[kend]" end-of-line