Skip to content
Filetype-specific mappings for [[ and ]]
Vim script Shell
Branch: master
Clone or download
perelo and arp242 Add support for ft=qf (#3)
* Add ft=qf support : beginning of file chunk

* force using the old regex engine, it's faster

* Fix ft=qf : comment and test

    fix test.qf
    update comment
    add guard to set ft to %:e if none was ftdetect
Latest commit fd2096c Aug 15, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Add FUNDING.yml Aug 14, 2019
after/ftplugin Add support for ft=qf (#3) Aug 15, 2019
autoload Add support for ft=qf (#3) Aug 15, 2019
.travis.yml Make Travis not fail on errors Aug 14, 2019
LICENSE Hello, world! Aug 3, 2019
README.markdown Add support for ft=qf (#3) Aug 15, 2019
tbl Add ft=help Aug 12, 2019


Filetype-specific mappings for [[ and ]] to jump to the next or previous section.

Use g:jumpy_map to configure the mappings:

let g:jumpy_map = [']]', '[[']                     Defaults.
let g:jumpy_map = ['<Leader>[', '<Leader>]']       Use Leader.
let g:jumpy_map = 0                                Don't map anything.

Use g:jumpy_after to run a command after after jumping:

let g:jumpy_after = ''                             Default.
let g:jumpy_after = 'zz'                           Center the screen.

Currently supported filetype with their patterns:

Filetype     What it matches                     Regexp
--------     ---------------                     ------
c            Function/typedef opening brace      \v%(^\{|^\s@!.*\{$)
css          Selector                            ^[^ \t{}/]
diff         File                                ^diff 
git          Commit in git log                   ^commit 
go           Top-level declaration               \v^%(func|type|var|const|import)
help         Help tag definition                 \*[a-zA-Z0-9:_<> *-]\+\*
html         Common block elements               \v\<%(head|body|style|script|div|ul|article|section|main|header|footer|h\d)[> ]
javascript   Function declaration/expression     \v^\s*%(function\s*\w|%(var|let) \w*\s+\=\s+%(function\(|\(.{-}\)\s*\=\>\s*))
lua          Function definition                 ^\s*function\>
make         Target                              ^[a-zA-Z0-9 _-]\+:
markdown     Header and horizontal rule          \v%(^\=\=\=|^---|^#{1,6})
php          Function, class, interface          \v^\s*%(%(abstract\s+|final\s+|private\s+|public\s+|protected\s|static\s+)*function|%(abstract\s+|final\s+)*class|interface)>
python       Function, method, class             \v^(class|\s*def|\s*async def)>
qf           Next/prev filename                  \%#=1\v^([^\|]+).*\n\1@!\zs
ruby         Function, class, or module          \v^\s*%(def|class|module)>
sh           Function declaration                ^\w\+()[ \n]*{
sql          CREATE and BEGIN                    \c\v^\s*%(create|begin)>
tex          Beginning of a section              \v\s*\\%(%(sub)*section|chapter|part|appendix|%(front|back|main)matter)>
vim          Function/augroup definition         \v%(^\s*fu%[nction]>|aug%[roup] (end)@!)
yaml         Top-level key                       ^\w\+:

This overrides mappings for some filetypes in Vim's standard distribution for consistency and usefulness (e.g. ft=vim behaves different when it can't find a match, ft=sql only jumps to BEGIN and not CREATE, etc.)

Adding a new filetype

  1. Call jumpy#map() in after/ftplugin/<ft>.vim.

  2. Add a test in autoload/jumpy_test.vim; the key is a filename from autoload/testdata/test.ext and the value a list of line numbers you expect it to jump to. The plugin is tested with testing.vim; running the full test suite should be as easy as tvim test ./....

  3. Use ./tbl to create the table; the first line is used as the "what it matches" column.

Alternatively, you can use a Filetype autocmd in your local vimrc file:

autocmd Filetype myft call jumpy#map('..pattern..')
You can’t perform that action at this time.