tmux-fingers: copy pasting with vimium/vimperator like hints.
Press ( prefix + F ) to enter [fingers] mode, it will highlight relevant stuff in the current pane along with letter hints. By pressing those letters, the highlighted match will be yanked. Less keystrokes == profit!
Relevant stuff:
- File paths
- git SHAs
- numbers ( 4+ digits )
- urls
- ip addresses
It also works on copy mode, but requires tmux 2.2 or newer to properly take the scroll position into account.
Additionally, you can install tmux-yank for system clipboard integration.
While in [fingers] mode, you can use the following shortcuts:
- a-z: yank a highlighted hint.
- SPACE: toggle compact hints ( see @fingers-compact-hints ).
- CTRL + c: exit [fingers] mode
- ESC: exit help or [fingers] mode
- ?: show help.
- tmux 2.1+ ( 2.2 recommended )
- bash 4+
- gawk
Using Tmux Plugin Manager
Add the following to your list of TPM plugins in .tmux.conf
:
set -g @plugin 'Morantron/tmux-fingers'
Hit prefix + I to fetch and source the plugin. You should now be able to use the plugin!
Clone the repo:
# Use --recursive flag to also fetch submodules
➜ git clone --recursive https://github.com/Morantron/tmux-fingers ~/.tmux/plugins/tmux-fingers
Source it in your .tmux.conf
:
run-shell ~/.tmux/plugins/tmux-fingers/tmux-fingers.tmux
Reload TMUX conf by running:
➜ tmux source-file ~/.tmux.conf
NOTE: for changes to take effect, you'll need to source again your .tmux.conf
file.
- @fingers-key
- @fingers-patterns-N
- @fingers-copy-command
- @fingers-copy-command-uppercase
- @fingers-compact-hints
- @fingers-hint-position
- @fingers-hint-position-nocompact
- @fingers-hint-format
- @fingers-hint-format-nocompact
- @fingers-highlight-format
- @fingers-highlight-format-nocompact
default: F
Customize how to enter fingers mode. Always preceded by prefix: prefix + @fingers-key
For example:
set -g @fingers-key F
You can also add additional patterns if you want more stuff to be highlighted:
set -g @fingers-pattern-0 'git rebase --(abort|continue)'
set -g @fingers-pattern-1 'yolo'
.
.
.
set -g @fingers-pattern-50 'whatever'
Patterns are case insensitive, and grep's extended syntax ( ERE ) should be used.
man grep
for more info.
If the introduced regexp contains an error, an error will be shown when invoking the plugin.
default: NONE
By default tmux-fingers will just yank matches using tmux clipboard ( or tmux-yank if present ).
If you still want to set your own custom command you can do so like this:
set -g @fingers-copy-command 'xclip -selection clipboard'
This command will also receive the following:
IS_UPPERCASE
: environment variable set to1
or0
depending on how the hint was introduced.HINT
: environment variable the selected letter hint itself ( ex:q
,as
, etc... ).stdin
: copied text will be piped to@fingers-copy-command
.
default: NONE
Same as @fingers-copy-command but it's only triggered when input is introduced in uppercase letters.
For example, this open links in browser when holding SHIFT while selecting the hint:
set -g @fingers-copy-command-uppercase 'xargs xdg-open'
default: 1
By default tmux-fingers will show hints in a compact format. For example:
/path/to/foo/bar/lol with @fingers-compact-hints set to 1: awath/to/foo/bar/lol with @fingers-compact-hints set to 0: /path/to/foo/bar/lol [aw]
( pressing aw would yank /path/to/foo/bar/lol
)
While in [fingers] mode you can press SPACE to toggle compact mode on/off.
Compact mode is preferred because it preserves the length of lines and doesn't cause line wraps, making it easier to follow.
However for small hints this can be troublesome: a path as small as /a/b
would have half of its original content concealed. If that's the case you can
quickly toggle off compact mode by pressing SPACE.
default: "left"
Control the position where the hint is rendered. Possible values are "left"
and "right"
.
default: "right"
Same as above, used when @fingers-compact-hints
is set to 0
.
default: "#[fg=yellow,bold]%s"
You can customize the colors using the same syntax used in .tmux.conf
for styling the status bar. You'll need to include the %s
placeholder in your custom format, that's where the content will be rendered.
Check all supported features here.
default: "#[fg=yellow,bold][%s]"
Same as above, used when @fingers-compact-hints
is set to 0
.
default: "#[fg=yellow,bold,dim]%s"
Custom format for the highlighted match. See @fingers-hint-format for more details.
default: "#[fg=yellow,bold,dim]%s"
Same as above, used when @fingers-compact-hints
is set to 0
.
This plugin is heavily inspired by tmux-copycat ( tmux-fingers predefined search are copycatted from tmux-copycat ).
Kudos to bruno- for paving the way to tmux plugins! 👏 👏