zshの起動が遅い。tmuxでパネル分割したときやls打ったあとがもっさりしてきた。 自分のzsh環境はoh-my-zshやpreztoなどは使っていないプレーンなzsh環境だったが、PROMPT表示に用いるvcs_infoが遅かったので改善した。 vcs_info gitやsubversionなどのバージョン管理システムから情報を取得してくれる関数。プロンプトにブランチ名や状態を表示するのに利用する。 リポジトリ情報の表示。ブランチ名の表示と差分があると✗がつく。 vcs_infoを使ったリポジトリ情報の表示は.zshrcに下記のような記載をするだけだ。 # PROMPTテーマ setopt prompt_subst #プロンプト表示する度に変数を展開 local CYAN=$'%{\e[36m%}' local GRAY=$'%{\e[37m%}' autoload -Uz vcs_i
概要 zsh に限らず各シェルはカスタマイズが可能ですが、カスタマイズの仕方によってはシェルの起動が遅くなることがあります。シェルは毎日起動するため、起動時間の劣化に気付きにくいですが、劣化したときに知らずに浪費してしまう時間は大きくなりがちです。 そのため、シェルの起動時間を定点観測することは日々の時間の浪費を防ぐために効果があります。 今回は GitHub Actions でこれを行う方法を紹介します。 zsh の起動時間の計測 zsh の起動速度はの計測方法は適当にググれば出てくる通り、次のコマンドを実行することで行なえます。 今回はパースのしやすさを考えて、--format オプションが使える GNU の time コマンドを使用しました。macOS において GNU の time コマンドは brew で gnu-time をインストールすれば gtime コマンドとして使用する
ZshのプラグインマネージャーというとAntigenやzplug、Zinit(旧zplugin)などが挙げられます。 私はこれまでZinitを使ってきましたが、作者がGitHubのOrganizationを削除してしまうという事件が起きました。有志がローカルのクローンから復旧させてメンテンスが続いていますが、他のプラグインマネージャーへの乗り換えを検討していたところ、Sheldonを見つけました。 SheldonはRust製のシェルプラグインマネージャーで、ZshだけでなくBashにも対応しています。ライセンスはApache License 2.0またはMIT Licenseを選択するデュアルライセンスで配布されています。 この記事ではmacOS上のZshでの利用を前提に記述していますが、他の環境でもインストール方法とシェルによる機能差分ぐらいしか違いはありません。 インストール macO
シェルでも IDE みたいに Tab を押さなくてもインクリメンタルな自動補完して欲しいって思ったことないですか? 5 回に 1 回くらい気がついたら Tab を自然にタイプしているそこのあなたに朗報です。 この zsh-autocomplete を使えばなんと不要な Tab 打ちから解放されることができます 🎉 今までの方法との違い 実は昔から自動補完候補を出す zsh プラグインは存在しました。 [incr-0.2.zsh](https://mimosa-pudica.net/zsh-incremental.html や になります(なぜか2つとも日本人作者) しかしこの2つのプラグインとも古く、更新が止まっています。(2013 年が最終更新日) 他にも似たようなものでよく使われてるのが になりますが、こちらは自動補完はしてくれますが全候補ではなく 1 候補だけの表示となります。 そ
仕事用のマシンをM1 MacBook Proに交換してもらったので、開発環境を整え直しました。 2年ほど fish を使ってきたのだけれど、普段は良いのだけれど、ちょっと自動化したくなったときに、やはりPOSIX準拠じゃないシェルはなかなか難しかった。macOSの標準も zsh になったことだし、久しぶりに戻ってみることにした。 導入 現代なので XDG Base Directory Specification に乗っかっておくことにする。 Arch Linux の Wiki がよくまとまっていて助かるのでこれを参考にして進めた。 zshの場合は ZDOTDIR を指定するといいのだけれど、これをどこで指定するのかという問題がある。zshの起動時に最初に読み込まれるユーザー設定は ~/.zshenv なのだけれど、ここに ZDOTDIR を書くということは .zshenv だけホームディレ
1.初めに Macで標準シェルがbashからzshに変わったので、zshの補完について勉強してみました。bashでもプログラム可能な補完ができますが、zshはそれよりも高水準の機能の補完を標準で盛り込んでいます。主にbashではできないような補完機能について述べていきます。 ・参考文献 zshの本 2.zshの補完システム zshには大別してcompsys、compctlという2つの補完システムが存在する。バージョン3.1.6より導入された新補完システムがcompsys、それよりも前から存在するcompctlという旧補完システムである。 新補完システムであるcompsysについて今回は見ていく。compsysで用意されている全ての補完機能を有効にするには以下のコマンドを実行する。デフォルトではcompsysは有効ではないので注意。よく使うのでこのコマンドは~/.zshrcなどに書き込んでお
num calls time self name ----------------------------------------------------------------------------------- 1) 1 952.79 952.79 96.34% 605.40 605.40 61.21% nvm_auto 2) 2 347.39 173.69 35.12% 191.34 95.67 19.35% nvm 3) 1 136.50 136.50 13.80% 127.14 127.14 12.86% nvm_ensure_version_installed 4) 2 22.19 11.10 2.24% 22.19 11.10 2.24% compaudit 5) 1 19.42 19.42 1.96% 19.29 19.29 1.95% nvm_die_on_prefix
今回はこの autoload が何をするものなのか解説します。 autoloadはシェル関数を読み込む autoload はシェル関数を 自動読み込み するシェルの組み込み関数です。上記のスクリプトの場合、 compinit というシェル関数を自動読み込みします。 シェルコマンドは PATH に入っていればそれだけで実行可能でしたが、シェル関数の場合は関数を定義しなければ使えません。 autoload はファイルシステム上にある関数定義を読み込むための関数なのです。そして autoload 探索するディレクトリは FPATH に入っています。 余談ですが FPATH だと : 区切りの文字列、 fpath だと配列になります。PATH と path と同じですね。 シェル関数とシェルコマンドの違い autoloadを使ってみる % mkdir ~/functions % FPATH="${
B! 23 0 0 0 Bashの補完について に引き続き、 ZshのTabを押した時に出る補完の自作等について。 Zsh補完 compinit comopdef 補完補助関数 compadd 補助関数 words, CURRENT zsh-completions MacのHomebrewでZsh補完のファイルをインストールするFormulaを作る Zsh補完 compinit Zshで補完を有効にするためにはまず、 autoload -U compinit compinit を実行する必要があります。 compinitが色々設定をしたりする関数なんですが、 autoloadしてから呼んであげる必要があります。 autoloadについては以下のページが丁寧に説明されてて分かりやすいです。 .zshrcで見かけるautoloadの意味と使い方 - Qiita 有効にするために取り敢えずこれを
今までずっと peco を使ってきたが、そろそろ別のツールに変えてみるか…と思い立ったので fzf に移行した。 junegunn/fzf: A command-line fuzzy finder written in Go 自分は基本的に飽き性なので、定期的に環境を変えたくなる時期が来るのだが fzf が思ってたより良かったので紹介したい。 fzfとは こちらの記事が参考になる。 おい、peco もいいけど fzf 使えよ - Qiita peco と同じく golang 製の command line fuzzy finder である。 インストールは brew で一発でできる。 $ brew install fzf 本当は zplug を使ってインストールしたかったのだが fzf にバンドルされている fzf-tmux が使えなさそうだったので brew で入れた。 ただ fzf-t
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く