システム設定#
プログラムドックの自動非表示加速
# ドックのアニメーション時間を 0.5 秒に設定
defaults write com.apple.dock autohide-time-modifier -float 0.5 && killall Dock
# ドックの応答時間を最短に設定
defaults write com.apple.dock autohide-delay -int 0 && killall Dock
# ドックのデフォルトのアニメーション時間を復元
defaults delete com.apple.dock autohide-time-modifier && killall Dock
# デフォルトのドックの応答時間を復元
defaults delete com.apple.Dock autohide-delay && killall Dock
ランチャーのカスタム行と列
# 列数を設定
defaults write com.apple.dock springboard-columns -int 7
# 行数を設定
defaults write com.apple.dock springboard-rows -int 6
# ドックを再起動して反映
killall Dock
# デフォルトの列数と行数を復元
defaults write com.apple.dock springboard-rows Default
defaults write com.apple.dock springboard-columns Default
# ドックを再起動して反映
killall Dock
よく使うソフトウェアのインストール#
コマンドラインツール#
システムのソフトウェアパッケージを管理するために Homebrew を統一して使用し、コマンドラインツールをインストールする際は、Homebrew が提供するパッケージを優先的に考慮します。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
おすすめのツール:
Prefer | Description | Replace |
---|---|---|
eza | ls の現代的でメンテナンスされた代替品。 | ls |
zoxide | より賢い cd コマンド、すべての主要なシェルをサポート。 | cd |
htop | インタラクティブなプロセスビューア。 | top |
ripgrep | ripgrep はディレクトリを再帰的に検索し、gitignore を尊重しながら正規表現パターンを探します。 | grep |
ncdu | Ncdu (NCurses Disk Usage) は ncurses インターフェースを持つディスク使用量アナライザー。 | du |
bat | wings を持つ cat (1) のクローン。 | cat |
fd | 'find' のシンプルで高速、ユーザーフレンドリーな代替品。 | find |
procs | Rust で書かれた ps の現代的な代替品。 | ps |
fzf | Go で書かれた一般的なコマンドラインファジーファインダー。 | find |
fzf-tab | zsh のデフォルトの補完選択メニューを fzf に置き換え。 | find |
tokei | コードに関する統計を表示するプログラム。 | cloc |
tldr | コンソールコマンドのための共同作成のチートシート。 | man |
thefuck | 前のコンソールコマンドを修正する素晴らしいアプリ。 | - |
lazygit | git コマンド用のシンプルなターミナル UI。 | git |
lazydocker | docker と docker-compose の両方のためのシンプルなターミナル UI。 | docker |
fastfetch | neofetch のようですが、主に C で書かれているためはるかに高速です。 | neofetch |
delta | git、diff、および grep 出力のための構文ハイライト付きページャー。 | diff |
ターミナルツール Fzf#
日常のシェル環境では、Fzf + Ripgrep + Bat + Vim を使用して効率を向上させ、ファイルとその内容を簡単に管理できます。
-
ファイル検索:
pf (preview file) エイリアスを使用してファイルを迅速にプレビューおよび選択します。Fzf を呼び出してインタラクティブなファジー検索を行い、Bat を使用して右側のウィンドウで構文ハイライトを実現し、選択したファイルの最初の 500 行の内容をプレビューします。Shift+Up と Shift+Down を使用してページをめくり、効率を向上させます。
alias pf='fzf --preview='\''bat --color=always --style=header,grid --line-range \ :500 {}'\'' --bind shift-up:preview-page-up,shift-down:preview-page-down'
以下の図のように:
-
内容検索:
rfv (ripgrep-fzf-vim) 関数を使用して全文内容検索を行い、Vim で結果を開きます。検索結果は Fzf ウィンドウにリアルタイムで表示され、Bat によってファイルの関連内容がプレビューされます。Enter キーと Ctrl+O キーをバインドして、Vim で検索結果を開き、さらに編集を行いやすくします。
rfv() ( RELOAD='reload:rg --column --color=always --smart-case {q} || :' OPENER='if [[ $FZF_SELECT_COUNT -eq 0 ]]; then vim {1} +{2} # 選択なし。現在の行を Vim で開く。 else vim +cw -q {+f} # 選択したアイテムのためのクイックフィックスリストを構築。 fi' fzf --disabled --ansi --multi \ --bind "start:$RELOAD" --bind "change:$RELOAD" \ --bind "enter:become:$OPENER" \ --bind "ctrl-o:execute:$OPENER" \ --delimiter : \ --preview 'bat --style=header,grid --color=always --line-range :500 --highlight-line {2} {1} \ --preview-window '~4,+{2}+4/3,<80(up)' \ --query "$*" )
以下の図のように:
上記の内容を ~/.zshrc
ファイルに追加することで、より効率的なコマンドラインワークフローを構築できます。
Zsh 設定#
私にとっては少し重い Oh My Zsh ではなく、プラグインを管理するために zinit を使用することにしました。
これにより、~/.zshrc
はいくつかのモジュールに分かれ、異なる機能設定が定義されます:
zinit 関連#
zinit をインストールする過程で、~/.zshrc
を自動的に引き継ぎ、以下の関連設定を追加します:
### Zinit のインストーラーによって追加されました
if [[ ! -f $HOME/.local/share/zinit/zinit.git/zinit.zsh ]]; then
print -P "%F{33} %F{220}インストール中 %F{33}ZDHARMA-CONTINUUM%F{220} イニシアティブプラグインマネージャー (%F{33}zdharma-continuum/zinit%F{220})…%f"
command mkdir -p "$HOME/.local/share/zinit" && command chmod g-rwX "$HOME/.local/share/zinit"
command git clone https://github.com/zdharma-continuum/zinit "$HOME/.local/share/zinit/zinit.git" && \
print -P "%F{33} %F{34}インストール成功です。%f%b" || \
print -P "%F{160} クローンに失敗しました。%f%b"
fi
source "$HOME/.local/share/zinit/zinit.git/zinit.zsh"
autoload -Uz _zinit
(( ${+_comps} )) && _comps[zinit]=_zinit
# Turbo なしでいくつかの重要な付属品を読み込む
# (これは現在、付属品に必要です)
zinit light-mode for \
zdharma-continuum/zinit-annex-as-monitor \
zdharma-continuum/zinit-annex-bin-gem-node \
zdharma-continuum/zinit-annex-patch-dl \
zdharma-continuum/zinit-annex-rust
### Zinit のインストーラーのチャンクの終わり
環境変数の読み込み#
# 環境変数を読み込む
export PATH="/Users/lkw123/Library/Python/3.9/bin:$HOME/.cargo/bin:$PATH"
export BAT_THEME="Monokai Extended Origin"
export STARSHIP_CONFIG="/Users/lkw123/.config/starship/starship.toml"
export GPG_TTY=$(tty)
3 つの基本プラグイン#
- zdharma/fast-syntax-highlighting: 構文ハイライト、
zsh-syntax-highlighting
とほぼ同じ機能、個人的には f-sy-h の方が好み。 - zsh-users/zsh-autosuggestions: 自動補完、履歴コマンドに基づいて自動補完。
- zsh-users/zsh-completions: 補完プラグイン、一般的なコマンドの補完を提供。
# zsh プラグインを追加
zinit light zdharma-continuum/fast-syntax-highlighting
zinit light zsh-users/zsh-completions
zinit light zsh-users/zsh-autosuggestions
# 補完を読み込む
autoload -Uz compinit && compinit
# 補完スタイル
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}'
zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}"
zstyle ':completion:*' menu no
fzf-tab の導入#
重要な点は、fzf-tab の README に記載されている 他のプラグインとの互換性 に従い、fzf-tab の導入を設定ファイルの最後に置く必要があることです。これにより zsh-completions プラグインとの競合を避けることができます。
# fzf-tab の初期化とスタイリング
zinit light Aloxaf/fzf-tab
zstyle ':fzf-tab:complete:cd:*' fzf-preview 'eza --icons -1 --color=always $realpath'
zstyle ':fzf-tab:complete:__zoxide_z:*' fzf-preview 'eza --icons -1 --color=always $realpath'
zstyle ':fzf-tab:complete:z:*' fzf-preview 'eza --icons -1 --color=always $realpath'
上記の設定により、cd ディレクトリに移動する際に fzf の機能を利用して目的のディレクトリのファイル構造を迅速にプレビューできます:
エイリアスの定義#
# エイリアス
alias ls="eza"
alias ll="eza --time-style=default --icons --git -l"
alias la="eza --time-style=long-iso --icons --group --git --binary -la"
alias tree="eza --tree --icons"
alias cls="clear"
alias cat="bat"
alias v="nvim"
履歴#
# 履歴
HISTSIZE=5000
HISTFILE=~/.zsh_history
SAVEHIST=$HISTSIZE
HISTDUP=erase
setopt appendhistory
setopt hist_ignore_space
setopt hist_ignore_all_dups
setopt hist_save_no_dups
setopt hist_ignore_dups
setopt hist_find_no_dups
シェル統合#
- starship:Rust に基づくクロスプラットフォームのシェルプロンプト、軽量で迅速、カスタマイズ可能な特徴を持ち、Tokyo Night プリセットを選択;
- thefuck:誤って入力したコマンドを迅速に変更するためのツール、実際の使用ではあまり役に立たないことが多い;
- zoxide:よく使う作業ディレクトリに迅速にジャンプするためのツール;
- fnm:Node.js のバージョン管理ツール。
# シェル統合
eval "$(starship init zsh)"
eval "$(thefuck --alias)"
eval "$(fzf --zsh)"
eval "$(zoxide init zsh)"
eval "$(fnm env --use-on-cd)"
最後に、Zsh の起動時間を簡単にテストします:
-
直感的に比較するために、Naive な方法で zsh の起動速度を観測:
❯ for i in $(seq 10); do /usr/bin/time zsh -lic exit done 0.16 real 0.10 user 0.04 sys 0.13 real 0.09 user 0.03 sys 0.13 real 0.09 user 0.03 sys 0.13 real 0.09 user 0.03 sys 0.13 real 0.09 user 0.03 sys 0.14 real 0.10 user 0.03 sys 0.14 real 0.09 user 0.03 sys 0.13 real 0.09 user 0.03 sys 0.13 real 0.09 user 0.03 sys 0.13 real 0.09 user 0.03 sys
-
zsh-bench を使用して zsh の起動時間をより詳細にベンチマークします:
❯ ./zsh-bench ==> ユーザー lkw123 のログインシェルをベンチマーク中 ... creates_tty=0 has_compsys=1 has_syntax_highlighting=1 has_autosuggestions=1 has_git_prompt=1 first_prompt_lag_ms=199.405 first_command_lag_ms=202.526 command_lag_ms=59.470 input_lag_ms=4.480 exit_time_ms=136.965
確かに素晴らしいです :)
開発ツール#
- Warp:Rust で書かれたクロスプラットフォームのターミナル、優れたパフォーマンスを持ち、AI のサポートもあります;
- VS Code:一般的な軽量コードエディタ、以下の推奨プラグイン:
- Zed Editor:Rust で構築され、強力で高速、Copilot やリアルタイムコラボレーションをサポートし、現在は主力エディタとして使用中;
GUI ツール#
Homebrew Cask を使用して一元管理します。
$ brew list
==> Formulae
...
==> Casks
1password iina plex
alacritty jellyfin sabnzbd
applite loop transmit
daisydisk lulu tuxera-ntfs
downie netnewswire typora
font-jetbrains-mono-nerd-font notion zed
font-lxgw-wenkai orbstack
handbrake pictureview
開発環境#
- Python: uv -> Rust で書かれた非常に高速な Python パッケージインストーラーおよび解決ツール
- Node: fnm -> Rust で構築された高速でシンプルな Node.js バージョン管理ツール
- Java: jenv -> Java 環境マネージャー
- Go: gvm -> Go バージョンマネージャー
- Rust: rustup -> Rust ツールチェインインストーラー
Tmux 設定#
B 站の UP 主パトリコキが動画 私と一緒に tmux を設定する で共有した設定プロセスに感謝します。私の Tmux 設定は基本的にそのまま使用しています:
# プラグインのリスト
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'christoomey/vim-tmux-navigator'
set -g @plugin 'tmux-plugins/tmux-yank'
# catppuccin テーマ
set -g @plugin "catppuccin/tmux"
set -g @catppuccin_flavour "mocha"
# TMUX プラグインマネージャーを初期化(tmux.conf の一番下にこの行を置いてください)
run '~/.tmux/plugins/tpm/tpm'
# プラグイン以外のオプション
set -g default-terminal "tmux-256color"
set -g base-index 1
set -g pane-base-index 1
set -g renumber-windows on
set -g mouse on
# ビジュアルモード
set-window-option -g mode-keys vi
bind-key -T copy-mode-vi v send-keys -X begin-selection
bind-key -T copy-mode-vi C-v send-keys -X rectangle-toggle
bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel
# キーマップ
unbind C-b
set -g prefix C-Space
MacOS ソフトウェアの一括更新#
準備作業#
- brew-cask-upgrade をインストール:
brew tap buo/cask-upgrade
brew-cask-upgrade
が正常にインストールされたか確認:brew tap | grep buo/cask-upgrade
- Mac App Store 上のアプリを管理するためのコマンドラインツール mas をインストール:
brew install mas
ソフトウェアの更新#
インストールされているすべてのソフトウェアをアップグレード:
brew update && brew upgrade && brew cu --all --yes --cleanup \
&& mas upgrade && brew cleanup
-
brew update
:Homebrew 自身および関連ソフトウェアソースの情報を更新し、インデックス情報を正確に保つ; -
brew upgrade
:システムにインストールされているすべての Homebrew ソフトウェアパッケージを最新バージョンにアップグレード; -
brew cu --all --yes --cleanup
:すべての更新可能な Homebrew cask ソフトウェアパッケージを最新バージョンに自動的にアップグレードし、完了後に古いバージョンをクリーンアップ;
- -all: 自動更新されるアプリもアップグレードに含める。
- -yes: すべての古いアプリを更新;パッケージの更新に対してはいと答える。
- -cleanup: 更新後にキャッシュされたダウンロードとトラッカーシンボリックリンクをクリーンアップ。
-
mas upgrade
: Mac App Store からインストールしたアプリケーションを一括更新; -
brew cleanup
: Homebrew インストール時に生成された一時ファイルやキャッシュをクリーンアップし、ディスクスペースを解放します。
実行結果の例は以下の通り:
定期的に実行するための定期タスクとして設定し、Mac 上のソフトウェアを最新の状態に保つことができます。
私の一部の dotfiles は GitHub リポジトリ synthpop123/dotfiles にホストされており、バックアップ目的でのみ使用されています。