私はtmux 1.6を実行しており、viスタイルのキーバインディングを使用して対話型モードでコピーするときにシステムクリップボードを使用するように設定したいと思います。
set-window-option -g mode-keys vi
bind-key -t vi-copy 'v' begin-selection
bind-key -t vi-copy 'y' "copy-selection && run \"tmux save-buffer | xclip -selection clipboard\""
Cつまり、+操作を実行し[てからvコピーするテキストの選択を開始し、押したときにyselectを使用して選択内容をtmuxにコピーし、それを使用してシステムクリップボードにエクスポートできるようにしますxclip
。
残念ながら、これを試してみると、次の内容が表示されます。
.tmux.conf: 14: unknown command: copy-selection && run "tmux save-buffer | xclip -selection clipboard"
tmux設定でこれを行う方法はありますか?
答え1
これも答えたここですが、使い方を理解するのに時間がかかりましたので、混乱している方のために説明させていただきます。
これは基本的に希望の設定です。
(tmuxの場合バージョン<2.5)
bind -t vi-copy y copy-pipe 'xclip -in -selection clipboard'
(tmuxの場合バージョン>=2.5)
bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel 'xclip -in -selection clipboard'
次にクリックしてCtrl+b
[
コピーモードに入ります。次に、Space
vi 移動キーを押して選択します。次に、Enter
クリックする代わりにクリックすると、y
選択内容がクリップボードにコピーされます。
注:これは、viキーでtmuxのデフォルトバインディングを使用すると想定しています。
Tmuxには、モードごとに異なるキーバインディングテーブルがあります。そのため、コピーモードでキー操作を設定してくださいbind-key -t vi-copy y
。最初は選択後にボールを打つy
のが慣れて混乱しました。実際には、コマンドの主キーバインディングです(コピーモードで)。このコマンドを使用すると、新しいキーをバインドして選択内容をコマンドに渡すことができます(この場合)。Enter
Enter
copy-selection
copy-pipe
xclip
を実行すると、コピーモードのすべてのキーバインディングを表示できますlist-keys -t vi-copy
。
答え2
答え3
私はあちこちで多くのことを試しましたが、これはUbuntu 20 LTSとtmux3.0aを使用する私のファイルで私に~/.tmux.conf
役立ちました。
#for copying to sys clipboard
bind -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "xclip -i -f -selection primary | xclip -i -selection clipboard"
bind -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -i -f -selection primary | xclip -i -selection clipboard"
bind -T copy-mode-vi C-j send-keys -X copy-pipe-and-cancel "xclip -i -f -selection primary | xclip -i -selection clipboard"
#general other stuff
set -g default-terminal "xterm-256color"
set -g mouse on
set-window-option -g mode-keys vi
答え4
xclip
Waylandでは、代わりにwl-clipboardパッケージの/を使用することをお勧めしますwl-copy
。wl-paste
これは私にとって効果的です。
set-window-option -g mode-keys vi
bind-key -T copy-mode-vi 'v' send-keys -X begin-selection
bind-key -T copy-mode-vi 'y' send-keys -X copy-pipe-and-cancel "wl-copy"
bind C-p run "wl-paste --no-newline | tmux load-buffer - ; tmux paste-buffer"
修正する:同じものを使うからtmux.confX11、Wayland、Cygwinでは、次の構成で終わりました。
bind-key -T copy-mode-vi v send -X begin-selection
if-shell -b 'echo $XDG_SESSION_TYPE | grep -q x11' "\
bind-key -T copy-mode-vi 'y' send-keys -X copy-pipe-and-cancel 'xclip -in -selection clipboard > /dev/null'; \
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel 'xclip -in -selection clipboard > /dev/null'; \
bind-key C-p run 'xclip -out -selection clipboard | tmux load-buffer - ; tmux paste-buffer'"
if-shell -b 'echo $XDG_SESSION_TYPE | grep -q wayland' "\
bind-key -T copy-mode-vi 'y' send-keys -X copy-pipe-and-cancel 'wl-copy'; \
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel 'wl-copy'; \
bind-key C-p run 'wl-paste --no-newline | tmux load-buffer - ; tmux paste-buffer'" "\
\
bind-key -T copy-mode-vi 'y' send-keys -X copy-pipe-and-cancel 'cat - >/dev/clipboard'; \
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel 'cat - >/dev/clipboard'; \
bind-key C-p run 'cat /dev/clipboard | tmux load-buffer - ; tmux paste-buffer'"