もた日記

くだらないことを真面目にやる

tmuxメモ : Tmux copycatとTmux Yankで検索、コピペを便利にする

github.com
github.com

Tmux copycatプラグインをインストールすると正規表現での検索、検索結果のハイライト、定義済み検索機能が使えるようになる。このプラグインはコピペを便利にするTmux Yankプラグインとセットで使用するとさらに使い勝手がよくマウスでの操作を減らすことができる。

と言ってもわかりにくいと思うのでそれぞれ使い方を説明した動画を見るのがよい。
Tmux copycat on Vimeo
Tmux Yank plugin on Vimeo

tpmでインストール


tpm(Tmux Plugin Manager)を使用している場合は、.tmux.confに下記行を追加してprefix + Iキーでインストール。

set -g @plugin 'tmux-plugins/tmux-copycat'
set -g @plugin 'tmux-plugins/tmux-yank'


Tmux copycat


基本的な使い方

prefix + /を押すと正規表現検索モードになり、検索文字列を入力してリターンを押すと検索結果がハイライトされる(例えば[0-9]+で数字を検索できる)。検索結果はnN押すと前後に移動することができる。
ハイライトされている結果をコピーしたい場合は、

キー操作 モード
Enter viモードの場合
ctrl-w または alt-w emacsモードの場合

を押すとコピーできる。
ペーストする場合はprefix + ]を押す(デフォルト設定の場合)。

定義済み検索

以下のキーバインドで定義済みの検索が可能。
例えばprefix + ctrl-fを押せばファイル名のみを対象として検索ができる。

prefix + ctrl-f ファイル検索
prefix + ctrl-g git status ファイル検索
prefix + alt-h SHA-1ハッシュ検索(git logの結果など)
prefix + ctrl-u URL検索
prefix + ctrl-d 数字検索
prefix + alt-i IPアドレス検索

f:id:wonder-wall:20160629223318p:plain

Tmux Yank


Tmux Yankプラグインをインストールすると、Tmux copycatでの検索結果がハイライトされている状態でyを押すとコピーされるようになる(コピーしたテキストをペーストする場合はCtrl + v)。
コピーしつつコマンドラインにペーストしたい場合はY (shift-y)を押す。

また、通常の状態でprefix + yを押すとコマンドラインのテキストをコピーでき、prefix + Y (shift-y)を押すとワーキングディレクトリのパスをコピーできる。
これはペインを分割して操作している場合に、現在のペインの内容を他ペインにペーストしたい場合などに役立つ。コマンドライン以外にも下記環境でも動作するので例えばpsql内のSQL文もコピペできる。

動作する環境

shells bash, zsh (with bindkey -e), tcsh
repls irb, pry, node, psql, python, php -a, coffee
remote shells ssh, mosh
editor vim/neovim command line (vim-husk または vim-rsi プラグインが必要)

f:id:wonder-wall:20160629223304p:plain

各OSの要件

OS X

pbcopyコマンドが使える状態になっていればよい。もしそれでも動かない場合は$ brew install reattach-to-user-namespaceをインストール。

Linux

xclipまたはxselコマンドが必要。
インストール方法は下記の通り。

Debian / Ubuntu $ sudo apt-get install xclip または $ sudo apt-get install xsel
Red hat / CentOS $ yum install xclip または $ yum install xsel
Cygwin(Windows)

cygutils-extraパッケージをインストールしてputclipコマンドが使える状態にする。