我目前正在.tmux.conf
bind -n C-h if "[ $(tmux display -p '#{pane_current_command}') = vim ]" "send-keys C-h" "select-pane -L"
bind -n C-j if "[ $(tmux display -p '#{pane_current_command}') = vim ]" "send-keys C-j" "select-pane -D"
bind -n C-k if "[ $(tmux display -p '#{pane_current_command}') = vim ]" "send-keys C-k" "select-pane -U"
bind -n C-l if "[ $(tmux display -p '#{pane_current_command}') = vim ]" "send-keys C-l" "select-pane -R"
这允许我按下: ctrl + [hjkl]我可以在vim中移动(向左,向下,向上,向右),但在tmux中进入复制模式时:
ctrl + b + [
我的绑定停止工作,如果我想移动,我需要使用箭头键:
ctrl + b +箭头键
是否有任何关于如何保持vim绑定在复制模式下工作或在任何模式下使其永久使用的想法?
我想在复制模式下移动面板,不要混淆尝试复制文本vim。
答案 0 :(得分:3)
我有同样的问题。这似乎是tmux 2.4的一个问题。您可以在之前的回复(https://github.com/christoomey/vim-tmux-navigator/issues/159)上提到的插件上查看此问题。
简而言之,只需将其添加到.tmux.conf
bind-key -T copy-mode-vi C-h select-pane -L
bind-key -T copy-mode-vi C-j select-pane -D
bind-key -T copy-mode-vi C-k select-pane -U
bind-key -T copy-mode-vi C-l select-pane -R
bind-key -T copy-mode-vi C-\ select-pane -l
答案 1 :(得分:0)
这部分内置于tmux中,并且通过几个键绑定,您可以获得大部分的vim键。
# turn on vi key mode
setw -g mode-keys vi
# bind v, y, Escape keys in vi-copy mode
bind -t vi-copy v begin-selection
bind -t vi-copy y copy-selection
bind -t vi-copy Escape cancel
# bind <prefix> + p to "paste"
unbind p
bind p paste-buffer
现在,当您进入复印模式时,您可以使用vim键移动光标并进行选择/复制。
h,j,k,l - movement of cursor
C-b - page up
C-f - page down
0,$ - start or end of current line
v - enter select mode
V - enter line-based select mode
y - yank current selection into copy buffer
Escape - cancel copy mode
此外,一旦退出复制模式,上面的<prefix
+ p
绑定将允许您使用<prefix>
+ p
粘贴复制缓冲区。
答案 2 :(得分:0)
我使用插件在窗格之间导航:
https://github.com/christoomey/vim-tmux-navigator
此插件的作者在〜/ .tmux.conf
中使用此代码段# Smart pane switching with awareness of Vim splits.
# See: https://github.com/christoomey/vim-tmux-navigator
is_vim="ps -o state= -o comm= -t '#{pane_tty}' \
| grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|n?vim?x?)(diff)?$'"
bind-key -n C-h if-shell "$is_vim" "send-keys C-h" "select-pane -L"
bind-key -n C-j if-shell "$is_vim" "send-keys C-j" "select-pane -D"
bind-key -n C-k if-shell "$is_vim" "send-keys C-k" "select-pane -U"
bind-key -n C-l if-shell "$is_vim" "send-keys C-l" "select-pane -R"
bind-key -n C-\ if-shell "$is_vim" "send-keys C-\\" "select-pane -l"
它也适用于tmux复制模式