fzf-tags bridges the gap between tags and fzf.vim.
It combines :tag and :tselect into a single improved command.
:FZFTags looks up the identifier under the cursor.
- If there are 0 or 1 definitions, the behavior is same as
:tag. - When there are multiple definitions, the results are piped to fzf for interactive filtering (https://github.com/junegunn/fzf#search-syntax).
:FZFTselect behaves just like :tselect.
- Loads the tags matching the argument into an FZF window.
- If no argument is provided, the last tag on the tag-stack is used.
This plugin uses the built-in :tag command under the hood, which
yields a couple benefits.
- Tag stack management works as expected (CTRL-T or
:popreturn you to your previous location). - Tag priority works as expected (
:help tag-priority).
Plug 'zackhsi/fzf-tags'fzf-tags exposes the <Plug>(fzf_tags) mapping.
To override the default jump-to-tag binding:
nmap <C-]> <Plug>(fzf_tags)Additionally, fzf-tags exposes a fuzzy :tselect. To replace the default :ts:
noreabbrev <expr> ts getcmdtype() == ":" && getcmdline() == 'ts' ? 'FZFTselect' : 'ts'To replace the default prompt 🔎:
let g:fzf_tags_prompt = "Gd "fzf-tags respects the global
g:fzf_layout
setting. For example:
let g:fzf_layout = { 'window': { 'width': 0.9, 'height': 0.6, 'highlight': 'Comment' } }