In my opinion, matchit is best used. This script is part of the vim runtime and can be easily loaded by adding the following line to your .vimrc:
runtime macros/matchit.vim
A standard Verilog plugin already contains the required compliance configuration:
" Let the matchit plugin know what items can be matched.
if exists("loaded_matchit")
let b:match_ignorecase=0
let b:match_words=
\ '\<begin\>:\<end\>,' .
\ '\<case\>\|\<casex\>\|\<casez\>:\<endcase\>,' .
\ '\<module\>:\<endmodule\>,' .
\ '\<if\>:\<else\>,' .
\ '\<function\>:\<endfunction\>,' .
\ '`ifdef\>:`else\>:`endif\>,' .
\ '\<task\>:\<endtask\>,' .
\ '\<specify\>:\<endspecify\>'
endif
, / %, , , ..
, , , , , . , , ; -, , hl_matchit. :
:help hl_matchit.txt
, Veritog filetype, vim, ifndef elsif, Verilog 2001. , verilog_systemverilog.vim, , fork , , /.