I've been using vim to write html files recently.
I'm so sick of the <...>
and <\...>
, so I write some inoremap
for convenience in a vim file:
autocmd Filetype html inoremap <buffer> <c-i> <><Esc>i
autocmd Filetype html inoremap <buffer> <c-j> <Esc>vi>"xyo<\<Esc>"xpa><Esc>O
autocmd Filetype html inoremap <buffer> <c-l> <Esc>vi>"xyf>a<\<Esc>"xpa><Esc>F<i
I edit a temporary html file to test it. Everything works fine but when I type <C-i> a <C-l>
. I thought the result would be <a> <\a>
, but it stopped in visual mode, selecting the a
, it feels like it just executed <Esc>vi>
and stopped.
After many tries, I realized that as long as there is only one character in <
>
, it works wrong.
I try split the command into
autocmd Filetype html inoremap <buffer> <c-t> <Esc>vi>
autocmd Filetype html noremap <buffer> <c-y> "xyf>a<\<Esc>"xpa><Esc>F<i
It works.
Is there any hidden problem with vim's visual mode or my vim?