macのターミナル環境を整える
↓を設定してmacのターミナル設定を整える。
- tmuxの自動起動
- pecoの便利ショートカット追加
tmuxの自動起動
↓を参考に.zshrcにtmuxの自動起動設定を記述。
[[tmux] 端末起動時に自動で新規セッションを作成 or 既存セッションにアタッチ - Qiita](https://qiita.com/ssh0/items/a9956a74bff8254a606a#%E3%81%BE%E3%81%A8%E3%82%81)
# .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上でもコピーができることが分かった。