diff --git a/tmux/fragment/plugins.conf b/tmux/fragment/plugins.conf new file mode 100644 index 0000000..aa2077c --- /dev/null +++ b/tmux/fragment/plugins.conf @@ -0,0 +1,70 @@ +# Default plugins list. By default this file is symlinked into ~/.config/tmux/plugins.conf. +# +# If you wish to change your plugin list, remove the symlink and add your own plugins. +# You can copy this file in as a starting point via: +# +# cp -vf "$PSOXIZSH/tmux/fragment/plugins.conf" ~/.config/tmux/plugins.conf +# +# If you'd like to check out the available plugins the following git repo keeps a list +# +# github.com/tmux-plugins/list + +# ===== PLUGINS ===== + +# This must always come first in the plugin list +set -g @plugin 'tmux-plugins/tpm' + +# === Prefix highlight +# Flashes a small indicator when {prefix} is hit, or when in certain tmux modes + +set -g @plugin 'tmux-plugins/tmux-prefix-highlight' + +# Options +set -g @prefix_highlight_prefix_prompt 'Pre' # default is 'Wait' +set -g @prefix_highlight_fg 'yellow' # default is 'colour231' +set -g @prefix_highlight_bg 'default' # default is 'colour04' +# set -g @prefix_highlight_show_copy_mode 'on' # display prefix in copy mode +# set -g @prefix_highlight_copy_prompt 'Copy' # copy display text +# set -g @prefix_highlight_copy_mode_attr 'fg=default,bg=yellow' # copy colors +# set -g @prefix_highlight_show_sync_mode 'on' # display prefix in window sync mode +# set -g @prefix_highlight_sync_prompt 'Sync' # sync display text +# set -g @prefix_highlight_sync_mode_attr 'fg=default,bg=yellow' # sync colors +# set -g @prefix_highlight_output_prefix '< ' # static prefix to add to prompt +# set -g @prefix_highlight_output_suffix ' >' # static suffix to add to prompt +# set -g @prefix_highlight_empty_has_affixes 'off' # switch to 'on' to allow affixes on empty prompts +# set -g @prefix_highlight_empty_prompt 'Tmux' # placeholder text when prompt isn't in use +# set -g @prefix_highlight_empty_attr 'fg=default,bg=default' # empty colors +# === + +# === Copycat +# Provides quick and easy keyboard text search and copying to +# tmux buffers + +set -g @plugin 'tmux-plugins/tmux-copycat' + +# Options +# set -g @copycat_search '/' # basic +# set -g @copycat_git_special 'C-g' # git (SHA) +# set -g @copycat_file_search 'C-f' # file path +# set -g @copycat_url_search 'C-u' # URL +# set -g @copycat_digit_search 'C-d' # number +# set -g @copycat_hash_search 'C-h' # hash +# set -g @copycat_ip_search 'C-i' # IP +# === + +# === Yank +# Expands on Copycat adding keybinds for yanking into the system +# clipboard. Requires OS specific clipboard managers. + +set -g @plugin 'tmux-plugins/tmux-yank' + +# Options +# set -g @override_copy_command 'my-clipboard-copy --some-arg' # overide the default copy command, must accept input to stdin +# set -g @yank_selection 'clipboard' # or 'primary' or 'secondary' +# set -g @yank_selection_mouse 'clipboard' # or 'primary' or 'secondary' +# set -g @yank_action 'copy-pipe-and-cancel' # or 'copy-pipe' to remain in copy mode after yanking +# set -g @yank_with_mouse 'on' # or 'off' by default yank will copy mouse selected text +# === + +# vim: filetype=tmux + diff --git a/tmux/fragment/vim-movement.conf b/tmux/fragment/vim-movement.conf new file mode 100644 index 0000000..5f9b8ac --- /dev/null +++ b/tmux/fragment/vim-movement.conf @@ -0,0 +1,34 @@ +# This fragmenet is meant to be used with a Vim plugin and provides unified movement +# between Vim window/panes and tmux panes. It requires you install the following in +# Vim to function correctly: +# +# github.com/christoomey/vim-tmux-navigator +# +# Include it by adding the following snippet to your early (or late) tmux.conf: +# +# source-file "$PSOXIZSH/tmux/fragment/vim-movement.conf" + +# Checks for if we're inside a Vim/FZF window +is_vim="ps -o state= -o comm= -t '#{pane_tty}' \ +| grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|n?vim?x?)(diff)?$'" +is_fzf="ps -o state= -o comm= -t '#{pane_tty}' \ +| grep -iqE '^[^TXZ ]+ +(\\S+\\/)?fzf$'" + +# Binds Ctrl- to left,down,up,right movements +bind -n C-h run "($is_vim && tmux send-keys C-h) \ + || tmux select-pane -L" +bind -n C-j run "($is_vim && tmux send-keys C-j) \ + || ($is_fzf && tmux send-keys C-j) \ + || tmux select-pane -D" +bind -n C-k run "($is_vim && tmux send-keys C-k) \ + || ($is_fzf && tmux send-keys C-k) \ + || tmux select-pane -U" +bind -n C-l run "($is_vim && tmux send-keys C-l) \ + || tmux 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 + +# Rebinds pane clear which overwritten by the above to {prefix} Ctrl-l +bind C-l send-keys 'C-l'