警告
本文最后更新于 2023-05-28,文中内容可能已过时。
通过配置 tmux
与 vim
的组合键,可以使用一套统一的快捷键来操作二者。
ctrl-j
ctrl-k
ctrl-h
ctrl-l
prefix
: ctrl-space
<prefix> ctrl-l
tmux 设置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
## vim ~/.tmux.conf
## 安装 vim-tmux-navigator: <prefix>-I
set -g @plugin 'christoomey/vim-tmux-navigator'
## 设置 <prefix>
#-- bindkeys --#
# prefix key (Ctrl+Space)
set -g prefix ^Space
unbind ^b
bind Space send-prefix
## 设置快捷键
## vim-tmux ------------------------------------------------------------------
is_vim="ps -o state= -o comm= -t '#{pane_tty}' \
| grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|n?vim?x?)(diff)?$'"
is_fzf="ps -o state= -o comm= -t '#{pane_tty}' \
| grep -iqE '^[^TXZ ]+ +(\\S+\\/)?fzf$'"
bind -n C-h run "($is_vim && tmux send-keys C-h) || \
tmux select-pane -L"
bind -n C-j run "($is_vim && tmux send-keys C-j) || \
($is_fzf && tmux send-keys C-j) || \
tmux select-pane -D"
bind -n C-k run "($is_vim && tmux send-keys C-k) || \
($is_fzf && tmux send-keys C-k) || \
tmux select-pane -U"
bind -n C-l run "($is_vim && tmux send-keys C-l) || \
tmux select-pane -R"
## clear terminal Ctr-x
bind-key -n C-x if-shell "$is_vim" "send-keys C-l" "send-keys C-l"
## clear terminal <prefix> Ctrl-l
bind C-l send-keys 'C-l'
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
|
vim 设置
1
2
3
4
5
6
7
8
|
" vim-tmux -------------------------------------------------------------------
Plug 'christoomey/vim-tmux-navigator'
let g:tmux_navigator_no_mappings = 1
noremap <silent> <c-h> :<C-U>TmuxNavigateLeft<cr>
noremap <silent> <c-j> :<C-U>TmuxNavigateDown<cr>
noremap <silent> <c-k> :<C-U>TmuxNavigateUp<cr>
noremap <silent> <c-l> :<C-U>TmuxNavigateRight<cr>
|