Tmux

Vim 模式複制粘貼在 Tmux 上不起作用

  • July 6, 2020

我是使用 Tmux 的新手。我已經看到在 Tmux 中複製粘貼非常困難。所以我尋找一種更簡單的方法。一些網站建議我應該使用 vim 模式,因為我對 vim 非常熟悉。但是,vim 模式複制粘貼不起作用。我不知道我做錯了什麼。這是我的 ~/.tmux.conf 文件。

# Improve colors
set -g default-terminal 'screen-256color'

# Set scrollback buffer to 10000
set -g history-limit 10000

# Customize the status line
set -g status-fg  green
set -g status-bg  black

set -g mouse on

bind P paste-buffer
bind-key -T copy-mode-vi v send-keys -X begin-selection
bind-key -T copy-mode-vi r send-keys -X rectangle-toggle
bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel 'xclip -in -selection clipboard'

# remap prefix to Control + a
set -g prefix M-a
# bind 'C-a C-a' to type 'C-a'
bind M-a send-prefix
unbind C-b



# List of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'

# Other examples:
# set -g @plugin 'github_username/plugin_name'
# set -g @plugin 'git@github.com/user/plugin'
# set -g @plugin 'git@bitbucket.com/user/plugin'

set -g @plugin 'jimeh/tmux-themepack'

set -g @themepack 'powerline/block/blue'

# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run -b '~/.tmux/plugins/tpm/tpm'

我正在使用 Tmux 2.5。提前感謝您的幫助。

  • 確保setw -g mode-keys vi在你的 conf 文件中有
  • 如您所見,您的拉動(也發送到剪貼板)正在使用外部命令:xclip。因此,請確保已安裝 xclip 或使用此腳本安裝它。
  • 確保使用 進入複製模式C-b [,然後v開始選擇,然後y拉動,最後C-b ]退出複制模式。
  • 不確定這是否會有所不同,但您可以嘗試:
bind-key -T copy-mode-vi 'v' send -X begin-selection
bind-key -T copy-mode-vi 'r' send -X rectangle-toggle
bind-key -T copy-mode-vi 'y' send -X copy-pipe-and-cancel

您還可以通過在變數中擷取 tmux 版本並使用一些 if 語句來使您的 .tmux.conf 更易於在版本之間傳輸。我個人有以下 .tmux.conf 到目前為止對於不同的版本執行良好(雖然從未使用過 2.5),我也從不同的來源縫合了這個,所以我不能 100% 確定每個版本的版本條件都是真的:

#check version and put in variable
run-shell 'tmux setenv -g TMUX_VERSION $(tmux -V | sed -En "s/^tmux ([0-9]+(.[0-9]+)?).*/\1/p")'

setw -g mode-keys vi
if-shell -b '[ "$(echo "$TMUX_VERSION < 2.4" | bc)" = 1 ]' " \
 bind-key -t vi-copy v begin-selection; \
 bind-key -t vi-copy r rectangle-toggle; \
 bind-key -t vi-copy y copy-pipe 'xclip -selection clipboard -in'"

#You would have to adapt here by changing ">" to ">="
#and maybe changing the key binding by what you
#already have if what you have indeed worked after 
#checking the points I gave you earlier.
if-shell -b '[ "$(echo "$TMUX_VERSION > 2.5" | bc)" = 1 ]' " \
 bind-key -T copy-mode-vi 'v' send -X begin-selection; \
 bind-key -T copy-mode-vi 'r' send -X rectangle-toggle; \
 bind-key -T copy-mode-vi 'y' send -X copy-pipe-and-cancel 'xclip -selection clipboard -in'"

如果有人可以為 vim 檢查/共享一個完全可移植的 .tmux.conf,例如支持 xclip 的複制/粘貼,它可能會對每個人都有幫助。

引用自:https://unix.stackexchange.com/questions/596891