Tmux Lemonade
This commit is contained in:
@ -68,14 +68,11 @@ setw -g mode-keys vi
|
|||||||
# Setup 'v' to begin selection as in Vim
|
# Setup 'v' to begin selection as in Vim
|
||||||
bind-key -T copy-mode-vi 'v' send -X begin-selection
|
bind-key -T copy-mode-vi 'v' send -X begin-selection
|
||||||
|
|
||||||
|
set -g @yank_action 'copy-pipe' # or 'copy-pipe-and-cancel' for the default
|
||||||
|
set -g @override_copy_command 'lemonade copy'
|
||||||
|
|
||||||
# transfer copied text to attached terminal with yank
|
# transfer copied text to attached terminal with yank
|
||||||
bind-key -T copy-mode-vi Y send-keys -X copy-pipe 'tmux save-buffer - | yank > #{pane_tty}'
|
bind-key -T copy-mode-vi C-c send -X copy-pipe-no-clear "lemonade copy"
|
||||||
|
|
||||||
# transfer most-recently copied text to attached terminal with yank
|
|
||||||
# bind-key -n M-y run-shell 'tmux save-buffer - | yank > #{pane_tty}'
|
|
||||||
|
|
||||||
# transfer previously copied text (chosen from a menu) to attached terminal
|
|
||||||
# bind-key -n M-Y choose-buffer 'run-shell "tmux save-buffer -b \"%%%\" - | yank > #{pane_tty}"'
|
|
||||||
|
|
||||||
# allowd pane-navigation while in copy-mode
|
# allowd pane-navigation while in copy-mode
|
||||||
bind-key -T copy-mode-vi C-h select-pane -L
|
bind-key -T copy-mode-vi C-h select-pane -L
|
||||||
@ -140,8 +137,6 @@ set -g @plugin 'tmux-plugins/tmux-continuum'
|
|||||||
set -g @continuum-restore 'on'
|
set -g @continuum-restore 'on'
|
||||||
set -g @resurrect-dir '$HOME/.tmux/resurrect'
|
set -g @resurrect-dir '$HOME/.tmux/resurrect'
|
||||||
|
|
||||||
#set -g @plugin 'odedlaz/tmux-onedark-theme'
|
|
||||||
|
|
||||||
set -g @catppuccin_flavour 'macchiato' # or frappe, macchiato, mocha
|
set -g @catppuccin_flavour 'macchiato' # or frappe, macchiato, mocha
|
||||||
|
|
||||||
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
|
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
|
||||||
|
@ -44,32 +44,32 @@ set_copy_mode_bindings() {
|
|||||||
copy_command_mouse="$(clipboard_copy_command "true")"
|
copy_command_mouse="$(clipboard_copy_command "true")"
|
||||||
if tmux_is_at_least 2.4; then
|
if tmux_is_at_least 2.4; then
|
||||||
tmux bind-key -T copy-mode-vi "$(yank_key)" send-keys -X "$(yank_action)" "$copy_command"
|
tmux bind-key -T copy-mode-vi "$(yank_key)" send-keys -X "$(yank_action)" "$copy_command"
|
||||||
tmux bind-key -T copy-mode-vi "$(put_key)" send-keys -X copy-pipe-and-cancel "tmux paste-buffer"
|
tmux bind-key -T copy-mode-vi "$(put_key)" send-keys -X copy-pipe-and-cancel "tmux paste-buffer -p"
|
||||||
tmux bind-key -T copy-mode-vi "$(yank_put_key)" send-keys -X copy-pipe-and-cancel "$copy_command; tmux paste-buffer"
|
tmux bind-key -T copy-mode-vi "$(yank_put_key)" send-keys -X copy-pipe-and-cancel "$copy_command; tmux paste-buffer -p"
|
||||||
tmux bind-key -T copy-mode-vi "$(yank_wo_newline_key)" send-keys -X "$(yank_action)" "$copy_wo_newline_command"
|
tmux bind-key -T copy-mode-vi "$(yank_wo_newline_key)" send-keys -X "$(yank_action)" "$copy_wo_newline_command"
|
||||||
if [[ "$(yank_with_mouse)" == "on" ]]; then
|
if [[ "$(yank_with_mouse)" == "on" ]]; then
|
||||||
tmux bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X "$(yank_action)" "$copy_command_mouse"
|
tmux bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X "$(yank_action)" "$copy_command_mouse"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
tmux bind-key -T copy-mode "$(yank_key)" send-keys -X "$(yank_action)" "$copy_command"
|
tmux bind-key -T copy-mode "$(yank_key)" send-keys -X "$(yank_action)" "$copy_command"
|
||||||
tmux bind-key -T copy-mode "$(put_key)" send-keys -X copy-pipe-and-cancel "tmux paste-buffer"
|
tmux bind-key -T copy-mode "$(put_key)" send-keys -X copy-pipe-and-cancel "tmux paste-buffer -p"
|
||||||
tmux bind-key -T copy-mode "$(yank_put_key)" send-keys -X copy-pipe-and-cancel "$copy_command; tmux paste-buffer"
|
tmux bind-key -T copy-mode "$(yank_put_key)" send-keys -X copy-pipe-and-cancel "$copy_command; tmux paste-buffer -p"
|
||||||
tmux bind-key -T copy-mode "$(yank_wo_newline_key)" send-keys -X "$(yank_action)" "$copy_wo_newline_command"
|
tmux bind-key -T copy-mode "$(yank_wo_newline_key)" send-keys -X "$(yank_action)" "$copy_wo_newline_command"
|
||||||
if [[ "$(yank_with_mouse)" == "on" ]]; then
|
if [[ "$(yank_with_mouse)" == "on" ]]; then
|
||||||
tmux bind-key -T copy-mode MouseDragEnd1Pane send-keys -X "$(yank_action)" "$copy_command_mouse"
|
tmux bind-key -T copy-mode MouseDragEnd1Pane send-keys -X "$(yank_action)" "$copy_command_mouse"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
tmux bind-key -t vi-copy "$(yank_key)" copy-pipe "$copy_command"
|
tmux bind-key -t vi-copy "$(yank_key)" copy-pipe "$copy_command"
|
||||||
tmux bind-key -t vi-copy "$(put_key)" copy-pipe "tmux paste-buffer"
|
tmux bind-key -t vi-copy "$(put_key)" copy-pipe "tmux paste-buffer -p"
|
||||||
tmux bind-key -t vi-copy "$(yank_put_key)" copy-pipe "$copy_command; tmux paste-buffer"
|
tmux bind-key -t vi-copy "$(yank_put_key)" copy-pipe "$copy_command; tmux paste-buffer -p"
|
||||||
tmux bind-key -t vi-copy "$(yank_wo_newline_key)" copy-pipe "$copy_wo_newline_command"
|
tmux bind-key -t vi-copy "$(yank_wo_newline_key)" copy-pipe "$copy_wo_newline_command"
|
||||||
if [[ "$(yank_with_mouse)" == "on" ]]; then
|
if [[ "$(yank_with_mouse)" == "on" ]]; then
|
||||||
tmux bind-key -t vi-copy MouseDragEnd1Pane copy-pipe "$copy_command_mouse"
|
tmux bind-key -t vi-copy MouseDragEnd1Pane copy-pipe "$copy_command_mouse"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
tmux bind-key -t emacs-copy "$(yank_key)" copy-pipe "$copy_command"
|
tmux bind-key -t emacs-copy "$(yank_key)" copy-pipe "$copy_command"
|
||||||
tmux bind-key -t emacs-copy "$(put_key)" copy-pipe "tmux paste-buffer"
|
tmux bind-key -t emacs-copy "$(put_key)" copy-pipe "tmux paste-buffer -p"
|
||||||
tmux bind-key -t emacs-copy "$(yank_put_key)" copy-pipe "$copy_command; tmux paste-buffer"
|
tmux bind-key -t emacs-copy "$(yank_put_key)" copy-pipe "$copy_command; tmux paste-buffer -p"
|
||||||
tmux bind-key -t emacs-copy "$(yank_wo_newline_key)" copy-pipe "$copy_wo_newline_command"
|
tmux bind-key -t emacs-copy "$(yank_wo_newline_key)" copy-pipe "$copy_wo_newline_command"
|
||||||
if [[ "$(yank_with_mouse)" == "on" ]]; then
|
if [[ "$(yank_with_mouse)" == "on" ]]; then
|
||||||
tmux bind-key -t emacs-copy MouseDragEnd1Pane copy-pipe "$copy_command_mouse"
|
tmux bind-key -t emacs-copy MouseDragEnd1Pane copy-pipe "$copy_command_mouse"
|
||||||
|
@ -66,7 +66,7 @@ Add the following to your `~/.tmux.conf` file:
|
|||||||
# Smart pane switching with awareness of Vim splits.
|
# Smart pane switching with awareness of Vim splits.
|
||||||
# See: https://github.com/christoomey/vim-tmux-navigator
|
# See: https://github.com/christoomey/vim-tmux-navigator
|
||||||
is_vim="ps -o state= -o comm= -t '#{pane_tty}' \
|
is_vim="ps -o state= -o comm= -t '#{pane_tty}' \
|
||||||
| grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|l?n?vim?x?)(diff)?$'"
|
| grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|l?n?vim?x?|fzf)(diff)?$'"
|
||||||
bind-key -n 'C-h' if-shell "$is_vim" 'send-keys C-h' '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-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-k' if-shell "$is_vim" 'send-keys C-k' 'select-pane -U'
|
||||||
@ -186,6 +186,15 @@ mapping.
|
|||||||
|
|
||||||
### Additional Customization
|
### Additional Customization
|
||||||
|
|
||||||
|
#### Ignoring programs that use Ctrl+hjkl movement
|
||||||
|
|
||||||
|
In interactive programs such as FZF, Ctrl+hjkl can be used instead of the arrow keys to move the selection up and down. If vim-tmux-navigator is getting in your way trying to change the active window instead, you can make it be ignored and work as if this plugin were not enabled. Just modify the `is_vim` variable(that you have either on the snipped you pasted on `~/.tmux.conf` or on the `vim-tmux-navigator.tmux` file). For example, to add the program `foobar`:
|
||||||
|
|
||||||
|
```diff
|
||||||
|
- is_vim="ps -o state= -o comm= -t '#{pane_tty}' | grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|l?n?vim?x?|fzf)(diff)?$'"
|
||||||
|
+ is_vim="ps -o state= -o comm= -t '#{pane_tty}' | grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|l?n?vim?x?|fzf|foobar)(diff)?$'"
|
||||||
|
```
|
||||||
|
|
||||||
#### Restoring Clear Screen (C-l)
|
#### Restoring Clear Screen (C-l)
|
||||||
|
|
||||||
The default key bindings include `<Ctrl-l>` which is the readline key binding
|
The default key bindings include `<Ctrl-l>` which is the readline key binding
|
||||||
@ -217,7 +226,7 @@ unbind -n C-\\
|
|||||||
|
|
||||||
#### Disable Wrapping
|
#### Disable Wrapping
|
||||||
|
|
||||||
By default, if you tru to move past the edge of the screen, tmux/vim will
|
By default, if you try to move past the edge of the screen, tmux/vim will
|
||||||
"wrap" around to the opposite side. To disable this, you'll need to
|
"wrap" around to the opposite side. To disable this, you'll need to
|
||||||
configure both tmux and vim:
|
configure both tmux and vim:
|
||||||
|
|
||||||
@ -231,7 +240,7 @@ to conditionally wrap based on position on screen:
|
|||||||
|
|
||||||
```tmux
|
```tmux
|
||||||
is_vim="ps -o state= -o comm= -t '#{pane_tty}' \
|
is_vim="ps -o state= -o comm= -t '#{pane_tty}' \
|
||||||
| grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|l?n?vim?x?)(diff)?$'"
|
| grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|l?n?vim?x?|fzf)(diff)?$'"
|
||||||
bind-key -n 'C-h' if-shell "$is_vim" { send-keys C-h } { if-shell -F '#{pane_at_left}' {} { select-pane -L } }
|
bind-key -n 'C-h' if-shell "$is_vim" { send-keys C-h } { if-shell -F '#{pane_at_left}' {} { select-pane -L } }
|
||||||
bind-key -n 'C-j' if-shell "$is_vim" { send-keys C-j } { if-shell -F '#{pane_at_bottom}' {} { select-pane -D } }
|
bind-key -n 'C-j' if-shell "$is_vim" { send-keys C-j } { if-shell -F '#{pane_at_bottom}' {} { select-pane -D } }
|
||||||
bind-key -n 'C-k' if-shell "$is_vim" { send-keys C-k } { if-shell -F '#{pane_at_top}' {} { select-pane -U } }
|
bind-key -n 'C-k' if-shell "$is_vim" { send-keys C-k } { if-shell -F '#{pane_at_top}' {} { select-pane -U } }
|
||||||
|
@ -11,8 +11,8 @@ GREEN=$(tput setaf 2)
|
|||||||
YELLOW=$(tput setaf 3)
|
YELLOW=$(tput setaf 3)
|
||||||
NORMAL=$(tput sgr0)
|
NORMAL=$(tput sgr0)
|
||||||
|
|
||||||
vim_pattern='(^|\/)g?(view|l?n?vim?x?)(diff)?$'
|
vim_pattern='(^|\/)g?(view|l?n?vim?x?|fzf)(diff)?$'
|
||||||
match_tests=(vim Vim VIM vimdiff lvim /usr/local/bin/vim vi gvim view gview nvim vimx)
|
match_tests=(vim Vim VIM vimdiff lvim /usr/local/bin/vim vi gvim view gview nvim vimx fzf)
|
||||||
no_match_tests=( /Users/christoomey/.vim/thing /usr/local/bin/start-vim )
|
no_match_tests=( /Users/christoomey/.vim/thing /usr/local/bin/start-vim )
|
||||||
|
|
||||||
display_matches() {
|
display_matches() {
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
version_pat='s/^tmux[^0-9]*([.0-9]+).*/\1/p'
|
version_pat='s/^tmux[^0-9]*([.0-9]+).*/\1/p'
|
||||||
|
|
||||||
is_vim="ps -o state= -o comm= -t '#{pane_tty}' \
|
is_vim="ps -o state= -o comm= -t '#{pane_tty}' \
|
||||||
| grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|l?n?vim?x?)(diff)?$'"
|
| grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|l?n?vim?x?|fzf)(diff)?$'"
|
||||||
tmux bind-key -n C-h if-shell "$is_vim" "send-keys C-h" "select-pane -L"
|
tmux bind-key -n C-h if-shell "$is_vim" "send-keys C-h" "select-pane -L"
|
||||||
tmux bind-key -n C-j if-shell "$is_vim" "send-keys C-j" "select-pane -D"
|
tmux bind-key -n C-j if-shell "$is_vim" "send-keys C-j" "select-pane -D"
|
||||||
tmux bind-key -n C-k if-shell "$is_vim" "send-keys C-k" "select-pane -U"
|
tmux bind-key -n C-k if-shell "$is_vim" "send-keys C-k" "select-pane -U"
|
||||||
|
Reference in New Issue
Block a user