vim regex the pipe is not escaped in a execute command -
i trying create operator pending mapping markdown headers, exercise in learning vim script hard way here line vimrc:
autocmd filetype markdown :onoremap ih :<c-u>execute "normal! ?\\(^==\\+$\\|^--\\+$\\)\r:nohlsearch\rkvg_"<cr>
i have error
e486: pattern not found: \(^==\+$|^--\+$\)
i tried modifications have same result, it's pipe never escaped !
inside :map
command, use <bar>
instead of pipe symbol:
autocmd filetype markdown :onoremap ih :<c-u>execute "normal! ?\\(^==\\+$\\<bar>^--\\+$\\)\r:nohlsearch\rkvg_"<cr>
that long :normal
command (that executes search, ex command, , more commands, separated \r
) ugly. you'd better use :call search(...)
instead of ?
command, , factor out multiple commands :function
.
Comments
Post a Comment