web-dev-qa-db-ja.com

ダブルクリックを使用してtmuxで選択してコピーできますか?

Tmuxの使い方を学んでいますが、tmuxウィンドウでダブルクリックして選択すると、コピー機能が機能しなくなったことがわかりました。

Iterm2と同じように、ダブルクリックして選択してコピーできますか?

私はしばらくの間グーグルで検索しましたが、これに対する短く明確な答えは見つかりませんでした。私が追加しました setw -g mode-mouse onすでにtmux設定ファイルにあります。

21
WKPlus

それを実現する方法を見つけました。ダブルクリックするときにoptionキーを押したままにします。

41
WKPlus

Iterm2についてはわかりませんが、これはtmux3.0以降で機能するようにすることができます
(Linux w/tmux 3.0でテスト済み、最後のコマンドはX11 xclipを使用)

行を選択してコピーするためのトリプルクリックも追加しました。

# Double LMB Select & Copy (Word)
bind-key -T copy-mode-vi DoubleClick1Pane \
    select-pane \; \
    send-keys -X select-Word-no-clear \; \
    send-keys -X copy-pipe-no-clear "xclip -in -sel primary"
bind-key -n DoubleClick1Pane \
    select-pane \; \
    copy-mode -M \; \
    send-keys -X select-Word \; \
    send-keys -X copy-pipe-no-clear "xclip -in -sel primary"

# Triple LMB Select & Copy (Line)
bind-key -T copy-mode-vi TripleClick1Pane \
    select-pane \; \
    send-keys -X select-line \; \
    send-keys -X copy-pipe-no-clear "xclip -in -sel primary"
bind-key -n TripleClick1Pane \
    select-pane \; \
    copy-mode -M \; \
    send-keys -X select-line \; \
    send-keys -X copy-pipe-no-clear "xclip -in -sel primary"

copy-mode-viを使用しない場合は、これをcopy-modeに置き換えてください。


古いtmuxバージョンについては、編集履歴を確認してください。

33
ideasman42

AlacrityShiftを保持すると、tmuxがないかのようにコピーできます。

ソース

4
seeker_of_bacon

@ ideasman42の答えから構築します。これは、macosmojaveにtmux2.8とpbcopyを使用しています。

# Double LMB Select & Copy (Word)
bind-key -n DoubleClick1Pane \
    select-pane \; \
    copy-mode -M \; \
    send-keys -X select-Word \; \
    run-Shell "sleep .5s" \; \
    send-keys -X copy-pipe-and-cancel "pbcopy"
bind-key -n DoubleClick1Pane \
    select-pane \; \
    copy-mode -M \; \
    send-keys -X select-Word \; \
    run-Shell "sleep .5s" \;
    send-keys -X copy-pipe-and-cancel "pbcopy

私のバージョンでは、Wordを選択して簡単に強調表示し、システムバッファにコピーしてから、コピーモードをキャンセルします。

3
yeetmap

私はあなたが端末から期待するものと同様のコピーアンドペーストメカニズムを理解しました

次の設定を使用して、次のことができるようにしました。

  1. マウスのダブルクリックアクションで単語を選択する
  2. マウスのトリプルクリックアクションで行を選択します
  3. マウスのドラッグアンドドロップアクションで部分的な行を選択します

このソリューションは、選択範囲を強調表示したままにし、選択範囲の出力を両方のクリップボードバッファー(プライマリとクリップボード)にコピーします。

「Enter」を押すと、終了してシェルに戻ります

ここでの利点は、マウスの中ボタンをtmuxの外部でShiftと挿入の組み合わせとして使用して、コンテンツが選択されたまま貼り付けることができることです。

また、シェルに戻ったときに、マウスの中ボタンを使用するか、Shiftキーを押しながら挿入を押してコンテンツを貼り付けることができます。

通常の端末環境に期待するすべてのこと

    # Enable mouse control
    setw -g mouse on

    unbind -T copy-mode-vi Enter
    bind-key -T copy-mode-vi Enter \
        send -X cancel

    # Drag and Drop Aelect & Copy (Selection)
    bind-key -T copy-mode-vi MouseDragEnd1Pane \
        send-keys -X copy-pipe "xclip -in -f | xclip -in -sel c" \; \
        send-keys -X no-clear

    # Double LMB Select & Copy (Word)
    bind-key -T copy-mode-vi DoubleClick1Pane \
        select-pane \; \
        send-keys -X select-Word \; \
        send-keys -X copy-pipe "xclip -in -f | xclip -in -sel c" \; \
        send-keys -X no-clear
    bind-key -n DoubleClick1Pane \
        select-pane \; \
        copy-mode -M \; \
        send-keys -X select-Word \; \
        send-keys -X copy-pipe "xclip -in -f | xclip -in -sel c" \; \
        send-keys -X no-clear

    # Triple LMB Select & Copy (Line)
    bind-key -T copy-mode-vi TripleClick1Pane \
        select-pane \; \
        send-keys -X select-line \; \
        send-keys -X copy-pipe "xclip -in -f | xclip -in -sel c" \; \
        send-keys -X no-clear
    bind-key -n TripleClick1Pane \
        select-pane \; \
        copy-mode -M \; \
        send-keys -X select-line \; \
        send-keys -X copy-pipe "xclip -in -f | xclip -in -sel c" \; \
        send-keys -X no-clear

    # Middle click to paste from the primary buffer
    unbind-key MouseDown2Pane
    bind-key -n MouseDown2Pane run "tmux set-buffer \"$(xclip -o)\"; tmux paste-buffer"

    # Shift insert to paste from the clipboard
    unbind-key S-IC
    bind-key S-IC run "tmux set-buffer \"$(xclip -o -sel c)\"; tmux paste-buffer"
  • 注1:これがsshセッション全体で機能するためには、sshのオプションとして-Xを指定する必要があります。
  • 注2:tmuxバージョン2.8を使用しています
0
Filip Van Genck