簡體   English   中英

鼠標選擇后如何從tmux輸出復制到系統剪貼板?

[英]How to copy to system clipboard from tmux output after mouse selection?

現在要復制到系統剪貼板,我必須使用Shift鍵在 tmux 窗口中通過鼠標文本進行選擇。 然后我必須運行這個命令:

tmux save-buffer - | reattach-to-user-namespace pbcopy

有沒有機會更容易地保存到系統剪貼板? 鍵綁定或更好地在 Shift 釋放后自動執行此操作。

我的 tmux 配置: https : //gist.github.com/3641580

如果您使用的是 iTerm2,您可以在 Tmux 會話中復制文本,按住Option鍵的同時拖動鼠標進行選擇。

然后應該可以像往常一樣使用Cmd + V將文本粘貼到任何地方。 在這里找到: http : //web.archive.org/web/20131226003700/http : //ootput.wordpress.com/2013/08/02/copy-and-paste-in-tmux-with-mouse/

如果您使用 iTerm2 3.x,您可以通過Applications in terminal may access clipboard啟用Applications in terminal may access clipboard來進行復制/粘貼工作:

在此處輸入圖片說明

只需用鼠標突出顯示文本即可將其復制到 macOS 剪貼板中! 無需按接受者答案中的建議按選項

您還可以使用通常的Cmd + V將 macOS 剪貼板粘貼到 tmux 中。

對於 os x,如果您使用應用程序“終端”。 您可以關閉鼠標滾動並使用通常的復制/粘貼功能(cmd+c/cmd+v):

set-option -g mouse-select-pane off
set-option -g mouse-resize-pane off
set-option -g mouse-select-window off
set-window-option -g mode-mouse off

或者您可以使用鼠標滾動並使用“fn 鍵”選擇文本:

set-window-option -g mode-mouse on

這里回答了一個類似的問題: https : //unix.stackexchange.com/questions/15715/getting-tmux-to-copy-a-buffer-to-the-clipboard

在那里找到的解決方案:

# move x clipboard into tmux paste buffer
bind C-p run "tmux set-buffer \"$(xclip -o)\"; tmux paste-buffer"
# move tmux copy buffer into x clipboard
bind C-y run "tmux show-buffer | xclip -i"

另請檢查: http : //awhan.wordpress.com/2012/04/18/tmux-copy-paste-with-mouse/

如果您設置了以下選項:

鼠標選擇面板

鼠標選擇窗口

您會注意到您根本無法選擇文本。

解決方法是使用shift鍵。

hold down the shift key and then left click and drag across the target text. you must also hold down the shift key and then middle click in order to paste the text.

在使用 tmux 2.2 或更高版本的 OSX 上,將以下內容添加到 tmux.conf 文件中:

bind-key -t emacs-copy MouseDragEnd1Pane copy-pipe "pbcopy"
bind-key -t vi-copy MouseDragEnd1Pane copy-pipe "pbcopy"

對於 tmux 2.4 版,由於他們好心地決定更改命令語法,您應該使用:

bind-key -T copy-mode MouseDragEnd1Pane send -X copy-pipe-and-cancel "pbcopy"

請注意,您可能還需要使用reattach-to-user-namespace pbcopy而不是普通的pbcopy

把它放在我的 ~/.tmux.conf 文件中對我有用:

bind y run-shell "reattach-to-user-namespace -l zsh -c 'tmux show-buffer | pbcopy'"

我發現的所有其他潛在解決方案都是將某種空內容復制到 OSX 剪貼板。

唯一的問題是,這似乎在粘貼內容的末尾放了一個回車。

按住鼠標左鍵,在窗格中選擇文本並按住按鈕。 然后按“y”,這會將選擇保存在剪貼板中並退出選擇/復制模式。

在這里使用 iTerm 3.1.beta.5、tmux 2.5 和以下配置:

### copy & paste -------------------------------------------------------
# Use vim keybindings in copy mode
setw -g mode-keys vi
# Setup 'v' to begin selection as in Vim
bind-key -T copy-mode-vi v send -X begin-selection
bind-key -T copy-mode-vi y send -X copy-pipe-and-cancel "reattach-to-user-namespace pbcopy"
# Update default binding of `Enter` to also use copy-pipe
unbind -T copy-mode-vi Enter
bind-key -T copy-mode-vi Enter send -X copy-pipe-and-cancel "reattach-to-user-namespace pbcopy"

按shift鍵然后鼠標點擊!! 檢查此鏈接。 http://awhan.wordpress.com/2012/04/18/tmux-copy-paste-with-mouse/

在 macOS High Sierra 的Terminal應用程序中,使用FN + mouse drag with left button downtmux窗口選擇文本后,我能夠使用CMD + C解決此問題。

這是我用於tmux 2.8、macOS Mojave 10.14.1 和 Terminal.app 的解決方案。

釋放鼠標按鈕后,這會在復制到系統剪貼板(以及tmux緩沖區)時刪除選擇:

bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "pbcopy"

我今天使用 netcat 制作了一個非常簡單的版本。

https://github.com/base698/tmux-copy-paste-mac-osx

這是 tmux.conf:

bind -t vi-copy 'v' begin-selection
bind -t vi-copy 'y' copy-pipe 'nc localhost 5682'
bind p run-shell 'nc localhost 5683; nc localhost 5683 | tmux load-buffer -' \; paste-buffer

在 1.8 中也適用於鼠標

一個強大的解決方案,適用於 mosh + tmux + vim + 嵌套會話的任意組合

在花了很多天解決這個問題之后,到目前為止我發現的最強大的解決方案是 Suraj N. Kurapati發布的解決方案 該解決方案使用(和不使用) tmux v3.2 和/或 vim 在本地工作,以及使用(和不使用) tmux和/或vim遠程工作,使用復制模式鍵和簡單的鼠標選擇。

如果與 Mike Gulick 的(當前開放的) pull request結合使用,所有這些組合也適用於mosh

在 Mike 的解決方案合並到 mosh 之前,您可以使用以下方法提取他的更改並在本地構建:

Ubuntu:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key C99B11DEB97541F0 \
&& sudo apt-add-repository https://cli.github.com/packages \
&& sudo apt update \
&& sudo apt install -y gh autoconf automake perl protobuf-compiler libprotobuf-dev libncurses-dev zlib1g-dev libutempter-dev libssl-dev pkg-config \
&& mkdir -p ~/tmp/mosh \
&& git clone https://github.com/mobile-shell/mosh ~/tmp/mosh \
&& cd ~/tmp/mosh \
&& gh pr checkout 1104 \
&& ./autogen.sh \
&& ./configure \
&& make \
&& sudo make install

蘋果系統:

我認為您需要先安裝 Apple 的 Xcode/Developer Command Line Tools(IIRC 現在只需運行gcc並退出即可完成),然后運行:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" \
&& brew install gh autoconf automake
&& mkdir -p ~/tmp/mosh \
&& git clone https://github.com/mobile-shell/mosh ~/tmp/mosh \
&& cd ~/tmp/mosh \
&& gh pr checkout 1104 \
&& ./autogen.sh \
&& ./configure \
&& make \
&& sudo make install

通過這些更新,剪貼板的聖杯終於實現了!

然而,這是非常新的信息,因此我的這篇文章相當不穩定。 所以:

如果出現以下情況,請修改我的帖子:

  1. 我缺少依賴項等,或者
  2. 不再需要對 Mike 的更改執行gh pr checkout 1104 ,因為它已合並到 mosh,或
  3. 不再需要從源代碼構建,因為合並的更改已推送到 brew/apt/etc 包管理器。

在 macOS 終端 Tmux 上,從特定窗格復制:

  1. 保持選項(光標更改為十字准線)[見下面的 *]
  2. 單擊並拖動以選擇文本
  3. 正常復制/粘貼,使用 CMD-C/V

*您可能需要使用 CMD-R 切換“允許鼠標報告”(請參閱​​終端,查看-...)。 我發現我經常將其切換為在 tmux 窗格內用鼠標滾動或復制粘貼。


在我的.tmux.conf ,我包括set -g mouse on

這是在 macOS Catalina 上,tmux 3.1c

對於那些現在在 mac 中尋找 tmux 中選擇如何工作的人:使用“fn”鍵來選擇、復制和粘貼。

monterey macosx 終端 2.21 的默認設置通過 ssh 連接到一台機器,上面運行着 tmux 2.6,有幾個窗格,tmux 配置就這么簡單:

set -g mouse on

要復制 - 按住🌐 Fn按鈕並使用鼠標選擇您需要的內容,然后按⌘ Command + C ,等等,文本在您的 mac 緩沖區中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM