" matchit.vim: (global plugin) Extended "%" matching
" autload script of matchit plugin, see ../plugin/matchit.vim
-" Last Change: Jan 09, 2026
+" Last Change: June 01, 2026
" Neovim does not support scriptversion
if has("vimscript-4")
let s:all = substitute(s:all, s:notslash .. '\zs\\\(:\|,\)', '\1', 'g')
" Just in case there are too many '\(...)' groups inside the pattern, make
" sure to use \%(...) groups, so that error E872 can be avoided
- let s:all = substitute(s:all, '\\(', '\\%(', 'g')
+ let s:all = substitute(s:all, s:notslash .. '\zs\\(', '\\%(', 'g')
let s:all = '\%(' .. s:all .. '\)'
if exists("b:match_debug")
let b:match_pat = s:pat
if table[d] != "-"
let backref = substitute(a:matchline, a:prefix .. word .. a:suffix,
\ '\' .. table[d], "")
- " Are there any other characters that should be escaped?
- let backref = escape(backref, '*,:')
+ " escape magic pattern metacharacters and matchit special characters [,:]
+ let backref = escape(backref, '\.*[^$~,:')
execute s:Ref(ini, d, "start", "len")
let ini = strpart(ini, 0, start) .. backref .. strpart(ini, start+len)
let tailBR = substitute(tailBR, s:notslash .. '\zs\\' .. d,
-*matchit.txt* Extended "%" matching Last change: 2026 Jan 06
+*matchit.txt* Extended "%" matching Last change: 2026 Jun 01
VIM REFERENCE MANUAL by Benji Fisher et al
The main variable is |b:match_words|. It is described in the section below on
supporting a new language.
- *MatchError* *matchit-hl* *matchit-highlight*
-MatchError is the highlight group for error messages from the script. By
-default, it is linked to WarningMsg. If you do not want to be bothered by
-error messages, you can define this to be something invisible. For example,
-if you use the GUI version of Vim and your command line is normally white, you
-can do >
- :hi MatchError guifg=white guibg=white
-<
*b:match_ignorecase*
If you >
:let b:match_ignorecase = 1
:MatchDebug matchit.txt /*:MatchDebug*
:MatchDisable matchit.txt /*:MatchDisable*
:MatchEnable matchit.txt /*:MatchEnable*
-MatchError matchit.txt /*MatchError*
[% matchit.txt /*[%*
]% matchit.txt /*]%*
b:match_col matchit.txt /*b:match_col*
matchit-debug matchit.txt /*matchit-debug*
matchit-details matchit.txt /*matchit-details*
matchit-disable matchit.txt /*matchit-disable*
-matchit-highlight matchit.txt /*matchit-highlight*
-matchit-hl matchit.txt /*matchit-hl*
matchit-intro matchit.txt /*matchit-intro*
matchit-languages matchit.txt /*matchit-languages*
matchit-modes matchit.txt /*matchit-modes*
" matchit.vim: (global plugin) Extended "%" matching
" Maintainer: Christian Brabandt
-" Version: 1.21
-" Last Change: 2024 May 20
+" Version: 1.22
+" Last Change: 2026 Jun 01
" Repository: https://github.com/chrisbra/matchit
" Previous URL:http://www.vim.org/script.php?script_id=39
" Previous Maintainer: Benji Fisher PhD <benji@member.AMS.org>
nnoremap <silent> <Plug>(MatchitNormalForward) :<C-U>call matchit#Match_wrapper('',1,'n')<CR>
nnoremap <silent> <Plug>(MatchitNormalBackward) :<C-U>call matchit#Match_wrapper('',0,'n')<CR>
xnoremap <silent> <Plug>(MatchitVisualForward) :<C-U>call matchit#Match_wrapper('',1,'v')<CR>
- \:if col("''") != col("$") \| exe ":normal! m'" \| endif<cr>gv``
+ \:if line("''") != line(".") \|\| col("''") != col("$") \| exe ":normal! m'" \| endif<cr>gv``
xnoremap <silent> <Plug>(MatchitVisualBackward) :<C-U>call matchit#Match_wrapper('',0,'v')<CR>m'gv``
onoremap <silent> <Plug>(MatchitOperationForward) :<C-U>call matchit#Match_wrapper('',1,'o')<CR>
onoremap <silent> <Plug>(MatchitOperationBackward) :<C-U>call matchit#Match_wrapper('',0,'o')<CR>