tmux und vim im Homeoffice
Da ich mit Homeoffice zu einem eher sporadischen Workplace-Setup gezwungen war, habe ich meine Konfigurationen für tmux und vim überarbeitet, um auf meine tägliche Arbeit auf einem einzelnen Laptopbildschirm so angenehm wie möglich erledigen zu können. Dabei hat mich vor allem das Wechseln zwischen tmux-panes und vim-splits am meisten verwirrt. Was die Datei jetzt in einem separaten vim offen oder muss ich die andere Tastenkombination verwenden, um innerhalb von vim zu wechseln? Dazu habe ich vim-tmux-navigator entdeckt. Die Konfiguration ist simpel:
Konfiguration vim
Das vim-tmux-navigator Plugin wird installiert.
vundle
Wer vundle verwendet, fügt die folgende Zeile seiner .vimrc hinzu:
Plugin 'christoomey/vim-tmux-navigator'
Anschliessend wird das Plugin installiert (in vim ausführen):
:PluginInstall
pathogen
Wer pathogen verwendet lädt das Repo in seine Plugins herunter:
$ cd ~/.vim/bundle
$ git clone https://github.com/christoomey/vim-tmux-navigator
Konfiguration tmux
In die Datei ~/.tmux.conf wird folgendes hinzugefügt:
# 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' 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
Jetzt kann zwischen vim- und tmux-Fenstern mit CTRL+hjkl einfach hin- und hergewechselt werden.