kjuulh
f13dda7722
Add .tmux/plugins/tmux-sensible/CHANGELOG.md Add .tmux/plugins/tmux-sensible/LICENSE.md Add .tmux/plugins/tmux-sensible/README.md Add .tmux/plugins/tmux-sensible/.git/HEAD Add .tmux/plugins/tmux-sensible/.git/config Add .tmux/plugins/tmux-sensible/.git/description Add .tmux/plugins/tmux-sensible/.git/hooks/applypatch-msg.sample Add .tmux/plugins/tmux-sensible/.git/hooks/commit-msg.sample Add .tmux/plugins/tmux-sensible/.git/hooks/fsmonitor-watchman.sample Add .tmux/plugins/tmux-sensible/.git/hooks/post-update.sample Add .tmux/plugins/tmux-sensible/.git/hooks/pre-applypatch.sample Add .tmux/plugins/tmux-sensible/.git/hooks/pre-commit.sample Add .tmux/plugins/tmux-sensible/.git/hooks/pre-merge-commit.sample Add .tmux/plugins/tmux-sensible/.git/hooks/pre-push.sample Add .tmux/plugins/tmux-sensible/.git/hooks/pre-rebase.sample Add .tmux/plugins/tmux-sensible/.git/hooks/pre-receive.sample Add .tmux/plugins/tmux-sensible/.git/hooks/prepare-commit-msg.sample Add .tmux/plugins/tmux-sensible/.git/hooks/push-to-checkout.sample Add .tmux/plugins/tmux-sensible/.git/hooks/update.sample Add .tmux/plugins/tmux-sensible/.git/index Add .tmux/plugins/tmux-sensible/.git/info/exclude Add .tmux/plugins/tmux-sensible/.git/logs/HEAD Add .tmux/plugins/tmux-sensible/.git/logs/refs/heads/master Add .tmux/plugins/tmux-sensible/.git/logs/refs/remotes/origin/HEAD Add .tmux/plugins/tmux-sensible/.git/objects/info/.keep Add .tmux/plugins/tmux-sensible/.git/objects/pack/pack-2a598c9f31f588f92fc2a83b1ab7a1ae38767c16.idx Add .tmux/plugins/tmux-sensible/.git/objects/pack/pack-2a598c9f31f588f92fc2a83b1ab7a1ae38767c16.pack Add .tmux/plugins/tmux-sensible/.git/packed-refs Add .tmux/plugins/tmux-sensible/.git/refs/heads/master Add .tmux/plugins/tmux-sensible/.git/refs/remotes/origin/HEAD Add .tmux/plugins/tmux-sensible/.git/refs/tags/v1.0.0 Add .tmux/plugins/tmux-sensible/.git/refs/tags/v1.1.0 Add .tmux/plugins/tmux-sensible/.git/refs/tags/v2.0.0 Add .tmux/plugins/tmux-sensible/.git/refs/tags/v2.1.0 Add .tmux/plugins/tmux-sensible/.git/refs/tags/v2.2.0 Add .tmux/plugins/tmux-sensible/.git/refs/tags/v2.3.0 Add .tmux/plugins/tmux-sensible/.git/refs/tags/v3.0.0 Add .tmux/plugins/tmux-sensible/.gitattributes Add .tmux/plugins/tmux-sensible/sensible.tmux Add .tmux/plugins/tmux/LICENSE Add .tmux/plugins/tmux/README.md Add .tmux/plugins/tmux/assets/frappe.webp Add .tmux/plugins/tmux/assets/latte.webp Add .tmux/plugins/tmux/assets/macchiato.webp Add .tmux/plugins/tmux/assets/mocha.webp Add .tmux/plugins/tmux/assets/preview.webp Add .tmux/plugins/tmux/catppuccin-frappe.tmuxtheme Add .tmux/plugins/tmux/catppuccin-latte.tmuxtheme Add .tmux/plugins/tmux/catppuccin-macchiato.tmuxtheme Add .tmux/plugins/tmux/catppuccin-mocha.tmuxtheme Add .tmux/plugins/tmux/.editorconfig Add .tmux/plugins/tmux/.git/HEAD Add .tmux/plugins/tmux/.git/config Add .tmux/plugins/tmux/.git/description Add .tmux/plugins/tmux/.git/hooks/applypatch-msg.sample Add .tmux/plugins/tmux/.git/hooks/commit-msg.sample Add .tmux/plugins/tmux/.git/hooks/fsmonitor-watchman.sample Add .tmux/plugins/tmux/.git/hooks/post-update.sample Add .tmux/plugins/tmux/.git/hooks/pre-applypatch.sample Add .tmux/plugins/tmux/.git/hooks/pre-commit.sample Add .tmux/plugins/tmux/.git/hooks/pre-merge-commit.sample Add .tmux/plugins/tmux/.git/hooks/pre-push.sample Add .tmux/plugins/tmux/.git/hooks/pre-rebase.sample Add .tmux/plugins/tmux/.git/hooks/pre-receive.sample Add .tmux/plugins/tmux/.git/hooks/prepare-commit-msg.sample Add .tmux/plugins/tmux/.git/hooks/push-to-checkout.sample Add .tmux/plugins/tmux/.git/hooks/sendemail-validate.sample Add .tmux/plugins/tmux/.git/hooks/update.sample Add .tmux/plugins/tmux/.git/index Add .tmux/plugins/tmux/.git/info/exclude Add .tmux/plugins/tmux/.git/logs/HEAD Add .tmux/plugins/tmux/.git/logs/refs/heads/main Add .tmux/plugins/tmux/.git/logs/refs/remotes/origin/HEAD Add .tmux/plugins/tmux/.git/objects/info/.keep Add .tmux/plugins/tmux/.git/objects/pack/pack-ca2499aaebdbbc41d6409686c32c5c7e0d6988c8.idx Add .tmux/plugins/tmux/.git/objects/pack/pack-ca2499aaebdbbc41d6409686c32c5c7e0d6988c8.pack Add .tmux/plugins/tmux/.git/objects/pack/pack-ca2499aaebdbbc41d6409686c32c5c7e0d6988c8.rev Add .tmux/plugins/tmux/.git/packed-refs Add .tmux/plugins/tmux/.git/refs/heads/main Add .tmux/plugins/tmux/.git/refs/remotes/origin/HEAD Add .tmux/plugins/tmux/.git/refs/tags/.keep Add .tmux/plugins/tmux/.gitignore Add .tmux/plugins/tmux/catppuccin.tmux Add .tmux/plugins/tpm/CHANGELOG.md Add .tmux/plugins/tpm/HOW_TO_PLUGIN.md Add .tmux/plugins/tpm/LICENSE.md Add .tmux/plugins/tpm/README.md Add .tmux/plugins/tpm/bin/clean_plugins Add .tmux/plugins/tpm/bin/install_plugins Add .tmux/plugins/tpm/bin/update_plugins Add .tmux/plugins/tpm/bindings/clean_plugins Add .tmux/plugins/tpm/bindings/install_plugins Add .tmux/plugins/tpm/bindings/update_plugins Add .tmux/plugins/tpm/docs/automatic_tpm_installation.md Add .tmux/plugins/tpm/docs/changing_plugins_install_dir.md Add .tmux/plugins/tpm/docs/how_to_create_plugin.md Add .tmux/plugins/tpm/docs/managing_plugins_via_cmd_line.md Add .tmux/plugins/tpm/docs/tpm_not_working.md Add .tmux/plugins/tpm/.git/HEAD Add .tmux/plugins/tpm/.git/config Add .tmux/plugins/tpm/.git/description Add .tmux/plugins/tpm/.git/hooks/applypatch-msg.sample Add .tmux/plugins/tpm/.git/hooks/commit-msg.sample Add .tmux/plugins/tpm/.git/hooks/fsmonitor-watchman.sample Add .tmux/plugins/tpm/.git/hooks/post-update.sample Add .tmux/plugins/tpm/.git/hooks/pre-applypatch.sample Add .tmux/plugins/tpm/.git/hooks/pre-commit.sample Add .tmux/plugins/tpm/.git/hooks/pre-merge-commit.sample Add .tmux/plugins/tpm/.git/hooks/pre-push.sample Add .tmux/plugins/tpm/.git/hooks/pre-rebase.sample Add .tmux/plugins/tpm/.git/hooks/pre-receive.sample Add .tmux/plugins/tpm/.git/hooks/prepare-commit-msg.sample Add .tmux/plugins/tpm/.git/hooks/push-to-checkout.sample Add .tmux/plugins/tpm/.git/hooks/update.sample Add .tmux/plugins/tpm/.git/index Add .tmux/plugins/tpm/.git/info/exclude Add .tmux/plugins/tpm/.git/logs/HEAD Add .tmux/plugins/tpm/.git/logs/refs/heads/master Add .tmux/plugins/tpm/.git/logs/refs/remotes/origin/HEAD Add .tmux/plugins/tpm/.git/objects/info/.keep Add .tmux/plugins/tpm/.git/objects/pack/pack-17625ffcf71a446997741831332005307218a33a.idx Add .tmux/plugins/tpm/.git/objects/pack/pack-17625ffcf71a446997741831332005307218a33a.pack Add .tmux/plugins/tpm/.git/packed-refs Add .tmux/plugins/tpm/.git/refs/heads/master Add .tmux/plugins/tpm/.git/refs/remotes/origin/HEAD Add .tmux/plugins/tpm/.git/refs/tags/.keep Add .tmux/plugins/tpm/.gitattributes Add .tmux/plugins/tpm/.gitignore Add .tmux/plugins/tpm/.gitmodules Add .tmux/plugins/tpm/.travis.yml Add .tmux/plugins/tpm/tpm Add .tmux/plugins/tpm/lib/tmux-test/.keep Add .tmux/plugins/tpm/scripts/check_tmux_version.sh Add .tmux/plugins/tpm/scripts/clean_plugins.sh Add .tmux/plugins/tpm/scripts/install_plugins.sh Add .tmux/plugins/tpm/scripts/source_plugins.sh Add .tmux/plugins/tpm/scripts/update_plugin.sh Add .tmux/plugins/tpm/scripts/update_plugin_prompt_handler.sh Add .tmux/plugins/tpm/scripts/helpers/plugin_functions.sh Add .tmux/plugins/tpm/scripts/helpers/shell_echo_functions.sh Add .tmux/plugins/tpm/scripts/helpers/tmux_echo_functions.sh Add .tmux/plugins/tpm/scripts/helpers/tmux_utils.sh Add .tmux/plugins/tpm/scripts/helpers/utility.sh Add .tmux/plugins/tpm/scripts/variables.sh Add .tmux/plugins/tpm/tests/expect_failed_plugin_download Add .tmux/plugins/tpm/tests/expect_successful_clean_plugins Add .tmux/plugins/tpm/tests/expect_successful_multiple_plugins_download Add .tmux/plugins/tpm/tests/expect_successful_plugin_download Add .tmux/plugins/tpm/tests/expect_successful_update_of_a_single_plugin Add .tmux/plugins/tpm/tests/expect_successful_update_of_all_plugins Add .tmux/plugins/tpm/tests/test_plugin_clean.sh Add .tmux/plugins/tpm/tests/test_plugin_installation.sh Add .tmux/plugins/tpm/tests/test_plugin_installation_legacy.sh Add .tmux/plugins/tpm/tests/test_plugin_sourcing.sh Add .tmux/plugins/tpm/tests/test_plugin_update.sh Add .tmux/plugins/tpm/tests/helpers/tpm.sh Add .tmux/plugins/vim-tmux-navigator/License.md Add .tmux/plugins/vim-tmux-navigator/README.md Add .tmux/plugins/vim-tmux-navigator/doc/tmux-navigator.txt Add .tmux/plugins/vim-tmux-navigator/.git/HEAD Add .tmux/plugins/vim-tmux-navigator/.git/config Add .tmux/plugins/vim-tmux-navigator/.git/description Add .tmux/plugins/vim-tmux-navigator/.git/hooks/applypatch-msg.sample Add .tmux/plugins/vim-tmux-navigator/.git/hooks/commit-msg.sample Add .tmux/plugins/vim-tmux-navigator/.git/hooks/fsmonitor-watchman.sample Add .tmux/plugins/vim-tmux-navigator/.git/hooks/post-update.sample Add .tmux/plugins/vim-tmux-navigator/.git/hooks/pre-applypatch.sample Add .tmux/plugins/vim-tmux-navigator/.git/hooks/pre-commit.sample Add .tmux/plugins/vim-tmux-navigator/.git/hooks/pre-merge-commit.sample Add .tmux/plugins/vim-tmux-navigator/.git/hooks/pre-push.sample Add .tmux/plugins/vim-tmux-navigator/.git/hooks/pre-rebase.sample Add .tmux/plugins/vim-tmux-navigator/.git/hooks/pre-receive.sample Add .tmux/plugins/vim-tmux-navigator/.git/hooks/prepare-commit-msg.sample Add .tmux/plugins/vim-tmux-navigator/.git/hooks/push-to-checkout.sample Add .tmux/plugins/vim-tmux-navigator/.git/hooks/update.sample Add .tmux/plugins/vim-tmux-navigator/.git/index Add .tmux/plugins/vim-tmux-navigator/.git/info/exclude Add .tmux/plugins/vim-tmux-navigator/.git/logs/HEAD Add .tmux/plugins/vim-tmux-navigator/.git/logs/refs/heads/master Add .tmux/plugins/vim-tmux-navigator/.git/logs/refs/remotes/origin/HEAD Add .tmux/plugins/vim-tmux-navigator/.git/objects/info/.keep Add .tmux/plugins/vim-tmux-navigator/.git/objects/pack/pack-d18103c902c90ca8df5435292ec0cf5b50bd3683.idx Add .tmux/plugins/vim-tmux-navigator/.git/objects/pack/pack-d18103c902c90ca8df5435292ec0cf5b50bd3683.pack Add .tmux/plugins/vim-tmux-navigator/.git/packed-refs Add .tmux/plugins/vim-tmux-navigator/.git/refs/heads/master Add .tmux/plugins/vim-tmux-navigator/.git/refs/remotes/origin/HEAD Add .tmux/plugins/vim-tmux-navigator/.git/refs/tags/v1.0 Add .tmux/plugins/vim-tmux-navigator/.gitignore Add .tmux/plugins/vim-tmux-navigator/vim-tmux-navigator.tmux Add .tmux/plugins/vim-tmux-navigator/pattern-check Add .tmux/plugins/vim-tmux-navigator/plugin/tmux_navigator.vim Add revive.toml
306 lines
10 KiB
Markdown
306 lines
10 KiB
Markdown
Vim Tmux Navigator
|
|
==================
|
|
|
|
This plugin is a repackaging of [Mislav Marohnić's](https://mislav.net/) tmux-navigator
|
|
configuration described in [this gist][]. When combined with a set of tmux
|
|
key bindings, the plugin will allow you to navigate seamlessly between
|
|
vim and tmux splits using a consistent set of hotkeys.
|
|
|
|
**NOTE**: This requires tmux v1.8 or higher.
|
|
|
|
Usage
|
|
-----
|
|
|
|
This plugin provides the following mappings which allow you to move between
|
|
Vim panes and tmux splits seamlessly.
|
|
|
|
- `<ctrl-h>` => Left
|
|
- `<ctrl-j>` => Down
|
|
- `<ctrl-k>` => Up
|
|
- `<ctrl-l>` => Right
|
|
- `<ctrl-\>` => Previous split
|
|
|
|
**Note** - you don't need to use your tmux `prefix` key sequence before using
|
|
the mappings.
|
|
|
|
If you want to use alternate key mappings, see the [configuration section
|
|
below][].
|
|
|
|
Installation
|
|
------------
|
|
|
|
### Vim
|
|
|
|
If you don't have a preferred installation method, I recommend using [Vundle][].
|
|
Assuming you have Vundle installed and configured, the following steps will
|
|
install the plugin:
|
|
|
|
Add the following line to your `~/.vimrc` file
|
|
|
|
``` vim
|
|
Plugin 'christoomey/vim-tmux-navigator'
|
|
```
|
|
|
|
Then run
|
|
|
|
```
|
|
:PluginInstall
|
|
```
|
|
|
|
If you are using Vim 8+, you don't need any plugin manager. Simply clone this repository inside `~/.vim/pack/plugin/start/` directory and restart Vim.
|
|
|
|
```
|
|
git clone git@github.com:christoomey/vim-tmux-navigator.git ~/.vim/pack/plugins/start/vim-tmux-navigator
|
|
```
|
|
|
|
|
|
### tmux
|
|
|
|
To configure the tmux side of this customization there are two options:
|
|
|
|
#### Add a snippet
|
|
|
|
Add the following to your `~/.tmux.conf` file:
|
|
|
|
``` tmux
|
|
# 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
|
|
```
|
|
|
|
#### TPM
|
|
|
|
If you'd prefer, you can use the Tmux Plugin Manager ([TPM][]) instead of
|
|
copying the snippet.
|
|
When using TPM, add the following lines to your ~/.tmux.conf:
|
|
|
|
``` tmux
|
|
set -g @plugin 'christoomey/vim-tmux-navigator'
|
|
run '~/.tmux/plugins/tpm/tpm'
|
|
```
|
|
|
|
Thanks to Christopher Sexton who provided the updated tmux configuration in
|
|
[this blog post][].
|
|
|
|
Configuration
|
|
-------------
|
|
|
|
### Custom Key Bindings
|
|
|
|
If you don't want the plugin to create any mappings, you can use the five
|
|
provided functions to define your own custom maps. You will need to define
|
|
custom mappings in your `~/.vimrc` as well as update the bindings in tmux to
|
|
match.
|
|
|
|
#### Vim
|
|
|
|
Add the following to your `~/.vimrc` to define your custom maps:
|
|
|
|
``` vim
|
|
let g:tmux_navigator_no_mappings = 1
|
|
|
|
nnoremap <silent> {Left-Mapping} :TmuxNavigateLeft<cr>
|
|
nnoremap <silent> {Down-Mapping} :TmuxNavigateDown<cr>
|
|
nnoremap <silent> {Up-Mapping} :TmuxNavigateUp<cr>
|
|
nnoremap <silent> {Right-Mapping} :TmuxNavigateRight<cr>
|
|
nnoremap <silent> {Previous-Mapping} :TmuxNavigatePrevious<cr>
|
|
```
|
|
|
|
*Note* Each instance of `{Left-Mapping}` or `{Down-Mapping}` must be replaced
|
|
in the above code with the desired mapping. Ie, the mapping for `<ctrl-h>` =>
|
|
Left would be created with `nnoremap <silent> <c-h> :TmuxNavigateLeft<cr>`.
|
|
|
|
##### Autosave on leave
|
|
|
|
You can configure the plugin to write the current buffer, or all buffers, when
|
|
navigating from Vim to tmux. This functionality is exposed via the
|
|
`g:tmux_navigator_save_on_switch` variable, which can have either of the
|
|
following values:
|
|
|
|
Value | Behavior
|
|
------ | ------
|
|
1 | `:update` (write the current buffer, but only if changed)
|
|
2 | `:wall` (write all buffers)
|
|
|
|
To enable this, add the following (with the desired value) to your ~/.vimrc:
|
|
|
|
```vim
|
|
" Write all buffers before navigating from Vim to tmux pane
|
|
let g:tmux_navigator_save_on_switch = 2
|
|
```
|
|
|
|
##### Disable While Zoomed
|
|
|
|
By default, if you zoom the tmux pane running Vim and then attempt to navigate
|
|
"past" the edge of the Vim session, tmux will unzoom the pane. This is the
|
|
default tmux behavior, but may be confusing if you've become accustomed to
|
|
navigation "wrapping" around the sides due to this plugin.
|
|
|
|
We provide an option, `g:tmux_navigator_disable_when_zoomed`, which can be used
|
|
to disable this unzooming behavior, keeping all navigation within Vim until the
|
|
tmux pane is explicitly unzoomed.
|
|
|
|
To disable navigation when zoomed, add the following to your ~/.vimrc:
|
|
|
|
```vim
|
|
" Disable tmux navigator when zooming the Vim pane
|
|
let g:tmux_navigator_disable_when_zoomed = 1
|
|
```
|
|
|
|
##### Preserve Zoom
|
|
|
|
As noted above, navigating from a Vim pane to another tmux pane normally causes
|
|
the window to be unzoomed. Some users may prefer the behavior of tmux's `-Z`
|
|
option to `select-pane`, which keeps the window zoomed if it was zoomed. To
|
|
enable this behavior, set the `g:tmux_navigator_preserve_zoom` option to `1`:
|
|
|
|
```vim
|
|
" If the tmux window is zoomed, keep it zoomed when moving from Vim to another pane
|
|
let g:tmux_navigator_preserve_zoom = 1
|
|
```
|
|
|
|
Naturally, if `g:tmux_navigator_disable_when_zoomed` is enabled, this option
|
|
will have no effect.
|
|
|
|
#### Tmux
|
|
|
|
Alter each of the five lines of the tmux configuration listed above to use your
|
|
custom mappings. **Note** each line contains two references to the desired
|
|
mapping.
|
|
|
|
### Additional Customization
|
|
|
|
#### Restoring Clear Screen (C-l)
|
|
|
|
The default key bindings include `<Ctrl-l>` which is the readline key binding
|
|
for clearing the screen. The following binding can be added to your `~/.tmux.conf` file to provide an alternate mapping to `clear-screen`.
|
|
|
|
``` tmux
|
|
bind C-l send-keys 'C-l'
|
|
```
|
|
|
|
With this enabled you can use `<prefix> C-l` to clear the screen.
|
|
|
|
Thanks to [Brian Hogan][] for the tip on how to re-map the clear screen binding.
|
|
|
|
#### Nesting
|
|
If you like to nest your tmux sessions, this plugin is not going to work
|
|
properly. It probably never will, as it would require detecting when Tmux would
|
|
wrap from one outermost pane to another and propagating that to the outer
|
|
session.
|
|
|
|
By default this plugin works on the outermost tmux session and the vim
|
|
sessions it contains, but you can customize the behaviour by adding more
|
|
commands to the expression used by the grep command.
|
|
|
|
When nesting tmux sessions via ssh or mosh, you could extend it to look like
|
|
`'(^|\/)g?(view|vim|ssh|mosh?)(diff)?$'`, which makes this plugin work within
|
|
the innermost tmux session and the vim sessions within that one. This works
|
|
better than the default behaviour if you use the outer Tmux sessions as relays
|
|
to different hosts and have all instances of vim on remote hosts.
|
|
|
|
Similarly, if you like to nest tmux locally, add `|tmux` to the expression.
|
|
|
|
This behaviour means that you can't leave the innermost session with Ctrl-hjkl
|
|
directly. These following fallback mappings can be targeted to the right Tmux
|
|
session by escaping the prefix (Tmux' `send-prefix` command).
|
|
|
|
``` tmux
|
|
bind -r C-h run "tmux select-pane -L"
|
|
bind -r C-j run "tmux select-pane -D"
|
|
bind -r C-k run "tmux select-pane -U"
|
|
bind -r C-l run "tmux select-pane -R"
|
|
bind -r C-\ run "tmux select-pane -l"
|
|
```
|
|
|
|
Troubleshooting
|
|
---------------
|
|
|
|
### Vim -> Tmux doesn't work!
|
|
|
|
This is likely due to conflicting key mappings in your `~/.vimrc`. You can use
|
|
the following search pattern to find conflicting mappings
|
|
`\vn(nore)?map\s+\<c-[hjkl]\>`. Any matching lines should be deleted or
|
|
altered to avoid conflicting with the mappings from the plugin.
|
|
|
|
Another option is that the pattern matching included in the `.tmux.conf` is
|
|
not recognizing that Vim is active. To check that tmux is properly recognizing
|
|
Vim, use the provided Vim command `:TmuxNavigatorProcessList`. The output of
|
|
that command should be a list like:
|
|
|
|
```
|
|
Ss -zsh
|
|
S+ vim
|
|
S+ tmux
|
|
```
|
|
|
|
If you encounter a different output please [open an issue][] with as much info
|
|
about your OS, Vim version, and tmux version as possible.
|
|
|
|
[open an issue]: https://github.com/christoomey/vim-tmux-navigator/issues/new
|
|
|
|
### Tmux Can't Tell if Vim Is Active
|
|
|
|
This functionality requires tmux version 1.8 or higher. You can check your
|
|
version to confirm with this shell command:
|
|
|
|
``` bash
|
|
tmux -V # should return 'tmux 1.8'
|
|
```
|
|
|
|
### Switching out of Vim Is Slow
|
|
|
|
If you find that navigation within Vim (from split to split) is fine, but Vim
|
|
to a non-Vim tmux pane is delayed, it might be due to a slow shell startup.
|
|
Consider moving code from your shell's non-interactive rc file (e.g.,
|
|
`~/.zshenv`) into the interactive startup file (e.g., `~/.zshrc`) as Vim only
|
|
sources the non-interactive config.
|
|
|
|
### It doesn't work in Vim's `terminal` mode
|
|
|
|
Terminal mode is currently unsupported as adding this plugin's mappings there
|
|
causes conflict with movement mappings for FZF (it also uses terminal mode).
|
|
There's a conversation about this in https://github.com/christoomey/vim-tmux-navigator/pull/172
|
|
|
|
### It Doesn't Work in tmate
|
|
|
|
[tmate][] is a tmux fork that aids in setting up remote pair programming
|
|
sessions. It is designed to run alongside tmux without issue, but occasionally
|
|
there are hiccups. Specifically, if the versions of tmux and tmate don't match,
|
|
you can have issues. See [this
|
|
issue](https://github.com/christoomey/vim-tmux-navigator/issues/27) for more
|
|
detail.
|
|
|
|
[tmate]: http://tmate.io/
|
|
|
|
### It Still Doesn't Work!!!
|
|
|
|
The tmux configuration uses an inlined grep pattern match to help determine if
|
|
the current pane is running Vim. If you run into any issues with the navigation
|
|
not happening as expected, you can try using [Mislav's original external
|
|
script][] which has a more robust check.
|
|
|
|
[Brian Hogan]: https://twitter.com/bphogan
|
|
[Mislav's original external script]: https://github.com/mislav/dotfiles/blob/master/bin/tmux-vim-select-pane
|
|
[Vundle]: https://github.com/gmarik/vundle
|
|
[TPM]: https://github.com/tmux-plugins/tpm
|
|
[configuration section below]: #custom-key-bindings
|
|
[this blog post]: http://www.codeography.com/2013/06/19/navigating-vim-and-tmux-splits
|
|
[this gist]: https://gist.github.com/mislav/5189704
|