看同事在 Mac OS X 用 tmux 的時候,可以直接用 vim 快捷鍵複製 terminal 的內容,感覺很方便,詢問同事怎麼辦到的,同事佛心的附上 tmux 的設定檔,內容如下:

setw -g mode-keys vi
set -g status-bg yellow
set -g status-fg black
set -g repeat-time 0
set -g mouse on
bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "reattach-to-user-namespace pbcopy"

我把設定檔放到 ~/.tmux.conf 成功使用 vi 快捷鍵,唯讀沒辦法進行複製。

因為我用的系統是 Ubuntu,找了一下資料發現 reattach-to-user-namespace pbcopy 是 Mac OS X 專用的,在 Linux 需要依靠 xclip 去實現,因此

~$ sudo apt install xclip
~$ vim ~/.tmux.conf
bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel 'xclip -sel clip -i'
setw -g mode-keys vi

就可以順利在 tmux copy-mode 使用 vi 快捷鍵複製 Terminal 的內容。

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/0f53fa6e-d4b1-4402-859f-5bf0e34de24e/Untitled.png

順帶一提,發現 Linux 蠻多地方都會用到 xclip 去做 copy-paste 操作的,例如之前將 vim-copycat 從 Python 2 移植到 Python 3(Porting vim-copycat Python 2 Code to Python 3)底層也是依賴 xclip。