allow to navigate seamlessly between vim and tmux splits using a consistent set of hotkeys
This commit is contained in:
+24
-4
@@ -14,10 +14,10 @@ bind-key -r C-h resize-pane -L
|
||||
bind-key -r C-l resize-pane -R
|
||||
|
||||
# vim-like pane switching
|
||||
bind-key -n C-k select-pane -U
|
||||
bind-key -n C-j select-pane -D
|
||||
bind-key -n C-h select-pane -L
|
||||
bind-key -n C-l select-pane -R
|
||||
# bind-key -n C-k select-pane -U
|
||||
# bind-key -n C-j select-pane -D
|
||||
# bind-key -n C-h select-pane -L
|
||||
# bind-key -n C-l select-pane -R
|
||||
|
||||
# and now unbind keys
|
||||
unbind Up
|
||||
@@ -29,3 +29,23 @@ unbind C-Up
|
||||
unbind C-Down
|
||||
unbind C-Left
|
||||
unbind C-Right
|
||||
|
||||
# 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|l?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'
|
||||
tmux_version='$(tmux -V | sed -En "s/^tmux ([0-9]+(.[0-9]+)?).*/\1/p")'
|
||||
if-shell -b '[ "$(echo "$tmux_version < 3.0" | bc)" = 1 ]' \
|
||||
"bind-key -n 'C-\\' if-shell \"$is_vim\" 'send-keys C-\\' 'select-pane -l'"
|
||||
if-shell -b '[ "$(echo "$tmux_version >= 3.0" | bc)" = 1 ]' \
|
||||
"bind-key -n 'C-\\' if-shell \"$is_vim\" 'send-keys C-\\\\' 'select-pane -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
|
||||
|
||||
+15
-3
@@ -49,6 +49,7 @@
|
||||
Plug 'vim-scripts/restore_view.vim'
|
||||
Plug 'mhinz/vim-startify'
|
||||
|
||||
Plug 'christoomey/vim-tmux-navigator'
|
||||
if executable('fzf')
|
||||
" fzf#install() makes sure that you have the latest binary, comment out because I don't want it to install binary for me
|
||||
Plug 'junegunn/fzf' ", { 'do': { -> fzf#install() } }
|
||||
@@ -79,7 +80,7 @@
|
||||
" The bottom buffer display
|
||||
Plug 'Donaldttt/vim-bufferline'
|
||||
Plug 'ryanoasis/vim-devicons'
|
||||
Plug 'Yggdroot/indentLine'
|
||||
" Plug 'Yggdroot/indentLine'
|
||||
endif
|
||||
|
||||
if executable('node')
|
||||
@@ -135,6 +136,16 @@ endfunction
|
||||
endif
|
||||
" }
|
||||
|
||||
if HasPlug('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>
|
||||
" noremap <silent> {Previous-Mapping} :<C-U>TmuxNavigatePrevious<cr>
|
||||
endif
|
||||
|
||||
" mhinz/vim-startify {
|
||||
if HasPlug("vim-startify")
|
||||
if g:vim_type == 'nvim'
|
||||
@@ -199,7 +210,7 @@ endfunction
|
||||
" }
|
||||
|
||||
" easymotion/vim-easymotion {
|
||||
|
||||
if HasPlug("vim-easymotion")
|
||||
" <Leader>f{char} to move to {char}
|
||||
map <Leader>f <Plug>(easymotion-bd-f)
|
||||
nmap <Leader>f <Plug>(easymotion-overwin-f)
|
||||
@@ -214,6 +225,7 @@ endfunction
|
||||
" Move to word
|
||||
map <Leader>w <Plug>(easymotion-bd-w)
|
||||
nmap <Leader>w <Plug>(easymotion-overwin-w)
|
||||
endif
|
||||
|
||||
" }
|
||||
|
||||
@@ -679,7 +691,7 @@ endfunction
|
||||
nnoremap <silent> <space>e :bnext<CR>
|
||||
|
||||
" leader s change all occurence
|
||||
nnoremap <silent> <Leader>s :%s/\<<C-r><C-w>\>/
|
||||
nnoremap <Leader>s :%s/\<<C-r><C-w>\>/
|
||||
|
||||
" leader num change tab
|
||||
" only for vim or nvim without lualine
|
||||
|
||||
Reference in New Issue
Block a user