macのターミナル環境を整える

公開日時
更新日時

↓を設定してmacのターミナル設定を整える。

  • tmuxの自動起動
  • pecoの便利ショートカット追加

tmuxの自動起動

↓を参考に.zshrcにtmuxの自動起動設定を記述。

# .zshrc

if [[ ! -n $TMUX && $- == *l* ]]; then
  # get the IDs
  ID="`tmux list-sessions`"
  if [[ -z "$ID" ]]; then
    tmux new-session
  fi
  create_new_session="Create New Session"
  ID="$ID\n${create_new_session}:"
  ID="`echo $ID | peco | cut -d: -f1`"
  if [[ "$ID" = "${create_new_session}" ]]; then
    tmux new-session
  elif [[ -n "$ID" ]]; then
    tmux attach-session -t "$ID"
  else
    :  # Start terminal normally
  fi
fi

これで毎回tmuxを起動しなくても自動復帰できるようになった。

pecoの便利ショートカット追加

pecoをインストールしたもののあまり活用できていなかった。

↓を参考に.zshrcに設定を追加。

記事のコメントにあるようにmacの場合はsedコマンドの正規表現のエスケープが効かなかったので-Eで指定するようにした。

参考: GNU/BSDでのsedにおける正規表現の扱いの違い

# .zshrc

function peco-src() {
    local selected_dir=$(ghq list -p | peco --query "$LBUFFER")
    if [ -n "$selected_dir" ]; then
        BUFFER="cd ${selected_dir}"
        zle accept-line
    fi
    zle clear-screen
}
zle -N peco-src
bindkey '^F' peco-src

function peco-history-selection() {
    BUFFER=`history -n 1 | tail -r  | awk '!a[$0]++' | peco`
    CURSOR=$#BUFFER
    zle reset-prompt
}

zle -N peco-history-selection
bindkey '^R' peco-history-selection

if [[ -n $(echo ${^fpath}/chpwd_recent_dirs(N)) && -n $(echo ${^fpath}/cdr(N)) ]]; then
    autoload -Uz chpwd_recent_dirs cdr add-zsh-hook
    add-zsh-hook chpwd chpwd_recent_dirs
    zstyle ':completion:*' recent-dirs-insert both
    zstyle ':chpwd:*' recent-dirs-default true
    zstyle ':chpwd:*' recent-dirs-max 1000
    zstyle ':chpwd:*' recent-dirs-file "$HOME/.cache/chpwd-recent-dirs"
fi

function peco-cdr () {
    local selected_dir="$(cdr -l | sed -E 's/^[0-9]+ +//' | peco --prompt="cdr >" --query "$LBUFFER")"
    if [ -n "$selected_dir" ]; then
        BUFFER="cd ${selected_dir}"
        zle accept-line
    fi
}
zle -N peco-cdr
bindkey '^D' peco-cdr

これで便利なショートカットが追加されターミナルが快適になった。

short cut機能
ctrl + fリポジトリ検索
ctrl + rコマンド履歴検索
ctrl + dディレクトリ移動履歴検索

tmux起動時のコピー

以前、tmuxでマウス操作を有効にして、スクロールしてyを押すとクリップボードにコピーできるようになったが、Command + cでコピーができないか調べてみた。

iTerm2の場合はoption + Command + cでtmux上でもコピーができることが分かった。


Related #mac

macbookのベゼルのゴムが剥がれ始めた

買い替え時なのかも

QuickTime Playerで画面収録の保存先を変更する

画面収録の起動後に「オプション」から変えられる

ErgoDox EZのキースイッチを入れ替えた

iのキースイッチを使用頻度の低いキースイッチと入れ替えた

ErgoDox EZのキースイッチ入れ替え再び

入れ替えたキーをメモしておかないと忘れてしまう