看同事在 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 的內容。
順帶一提,發現 Linux 蠻多地方都會用到 xclip 去做 copy-paste 操作的,例如之前將 vim-copycat 從 Python 2 移植到 Python 3(Porting vim-copycat Python 2 Code to Python 3)底層也是依賴 xclip。