13
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

tmux でマウスドラッグ終了時の挙動を「自動コピーして copy-mode 終了」ではなく「テキスト選択して copy-mode 続行」に変える

Last updated at Posted at 2018-09-13

免責

古め (2.1 以前?) の tmux の挙動は確認していません。
今回確認したのは tmux 2.7 での挙動です。

内容

言葉では非常に説明しにくいのですが、 tmux の設定で set-option -g mouse on すると、マウスドラッグ終了時の挙動は次のようになります:

「ドラッグ範囲をバッファにコピーし、copy-mode を終了」

tmux では、 スクロールも copy-mode でおこなわれる (と私は理解しています) ため、(マウスで) 範囲選択するとその時点でスクロールがキャンセルされてしまいます。(選択範囲はちゃんとコピーされている)

しかし、個人的には次のような挙動だとありがたいです:

「ドラッグしたら範囲選択のみ。copy-mode は終了しない (=スクロールが巻き戻らない)。選択範囲をバッファにコピーしたいときは、明示的に何らかのキー入力をする」

つまり、tmux 以外の環境での普通のコピーと同じ挙動であってほしいということです。
(例えばブラウザでは、「範囲選択をしたら勝手にテキストがコピーされてスクロールが巻き戻る」ようなことはせず、「範囲選択は範囲選択。コピーしたいなら ctrl-C やら cmd-C やらで明示的にコマンド入力。コピー後に選択範囲をキャンセルしたり、スクロールが巻き戻ったりしない」ですよね・・・)

この挙動にするには、次のような設定を入れれば OK です:

# Explicit `Enter` key fires copying the selection
unbind -T copy-mode MouseDragEnd1Pane
bind-key -T copy-mode Enter send-keys -X copy-pipe "tmux copy-buffer"

Enter の部分は好きなキーに変えてください。tmux のよく使われる 1 コピーのキーバインドと合わせるなら、 y も自然かと思います。
(2行目は tmux.conf の設定例で bind-key -T copy-mode v send-keys -X begin-selection と一緒によく見るので、すでに設定済みの人も多いと思います)

  1. よく使われるというか、デフォルトのキーバインドなんだろうか?

13
11
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
13
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?