LoginSignup
5
5

More than 5 years have passed since last update.

選択範囲をコピーしてもコピーモードを終わらせない方法

Last updated at Posted at 2016-11-30

tmuxで,ひとまずviモードでの話しかしませんが,プレフィックスキー入力からの C-[ でコピーモードに入った場合,Space で範囲選択を開始し,Enter で選択範囲をコピーすることが出来るのはよく知られていることだと思います.

tmux使ったことない人は何のことか分からないかもしれませんが,これが出来ると,ターミナル上に表示されている出力を,マウスを触ること無く,コピーしてペーストすることが可能です.詳しいことはtmuxの紹介記事などを参考にしてみて下さい.

※ちなみにこの機能は死ぬほど便利なので全てのターミナル(黒い画面)ユーザは今すぐtmuxを使うべきです.似たソフトにscreenというのもあります.screenをキレイに使うためのbyobuというのもあります.どれでもいいですがtmuxがナウなヤング向けです.

※もしかしたらこういうことが出来るターミナルエミュレータソフトもあるのかもしれません.そういうのを使ってる人は気にしないで下さい.VimやEmacsでなんとか出来るぜ!という人もいるかもしれません.そういう人も気にしないで下さい.

さてそのコピーモードで私が長年不満に感じていたことが,コピーを終えるとコピーモードが終了してしまい,カーソルも普通のプロンプトの場所まで戻ってしまうことでした.遠いところまでスクロールした後や,検索機能でやっと見つけた場所で,複数ヶ所のコピーをしなければならないとき,コピーモードでのカーソルの移動をコピーの度に行わなければなりませんでした.

出来るものなら,範囲選択をしてコピーをしても,コピーモードが終了せず,カーソルがそのままの位置にいてくれればいいのに…と思っていました.

それ,-x オプションで出来ます.

tmuxの設定ファイルであるところの ~/.tmux.conf に例えば以下の行を加えます.

bind-key -t vi-copy y copy-selection -x

追記: tmux 2.4からこの設定の仕方ではダメで以下のようにする必要があります

bind-key -Tcopy-mode-vi y send -X copy-selection

そもそも従来の copy-selectioncopy-selection-and-cancel という名前に変更されており,copy-selection だけで(-xオプションとかなしで)望みの挙動が実現されています.

参考

追記おわり

こうしておいて,普段 Enter でコピーをしていた代わりに,y を入力します.そうすると,tmuxのバッファにはコピーした情報が入りますがコピーモードは終わらずカーソル位置もそのままです.精神の健康を保ったまま,次の場所のコピーが出来ます.

※もちろん,コピーした内容を都度別のウィンドウなりペインなりで開いているテキストエディタなどにペーストしていく動作は忘れないようにして下さい.ただ,もしかしたらこういう不便も解消する,Vimのレジスタみたいな,名前付きのバッファ機能があったりするかもしれません.何か知ってる方居ましたら教えて頂けると幸いです.

※追記です.プレフィックスキーからの # で,コピーした履歴が見られます.なので,コピーした都度ペーストして回らなくてもなんとかなるっぽいですね.

参考

y 以外に割り当てたい人は,見たまんま,... vi-copy y copy-sel... と書かれている部分の y を好きなキーに変えて下さい.

ちなみにtmuxのバージョンは2.3で私は確認しました(tmux -V コマンドで確認).もっと古いバージョンでも大丈夫かもしれませんし大丈夫じゃないかもしれません.将来のバージョンでは大丈夫じゃないかもしれません.

あと,これだけドヤ顔して書いておいて,「実はデフォルトのキーバインドで出来るよ」ってのがあれば,むしろ教えて下さい.助かります.

References

検索用キーワード

tmux コピー コピーモード 終わらせない 継続

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5