私はターミナルで多くの仕事をしているので、選択したシェルである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