From 2aff2a28ff859771b68fcec9a83e4d67fccd565d Mon Sep 17 00:00:00 2001 From: Oliver Davies <oliver@oliverdavies.uk> Date: Tue, 1 Nov 2022 20:20:48 +0000 Subject: [PATCH] feat: re-add vim-tmux-navigator --- nixpkgs/home-manager/modules/common.nix | 1 + nixpkgs/home-manager/modules/tmux.nix | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/nixpkgs/home-manager/modules/common.nix b/nixpkgs/home-manager/modules/common.nix index baec0a1b..233b2305 100644 --- a/nixpkgs/home-manager/modules/common.nix +++ b/nixpkgs/home-manager/modules/common.nix @@ -72,6 +72,7 @@ vimPlugins.vim-repeat vimPlugins.vim-surround vimPlugins.vim-test + vimPlugins.vim-tmux-navigator # Debugging vimPlugins.nvim-dap diff --git a/nixpkgs/home-manager/modules/tmux.nix b/nixpkgs/home-manager/modules/tmux.nix index 29094f1a..d034696b 100644 --- a/nixpkgs/home-manager/modules/tmux.nix +++ b/nixpkgs/home-manager/modules/tmux.nix @@ -65,10 +65,28 @@ # Remove delay when switching Vim modes. set -sg escape-time 0 + + # 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-\\' if-shell "$is_vim" 'send-keys C-\\\\' 'select-pane -l' + 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 -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 ''; plugins = with pkgs; [ tmuxPlugins.resurrect + tmuxPlugins.vim-tmux-navigator tmuxPlugins.yank ]; };