Tente adicionar isso ao seu vimrc :
nmap <buffer> <silent> <expr> <F12> InsertCol()
imap <buffer> <silent> <expr> <F12> InsertCol()
function! InsertCol()
let w:first_call = exists('w:first_call') ? 0 : 1
"if w:first_call
" startinsert
"endif
try
let char = getchar()
catch /^Vim:Interrupt$/
let char = "\<Esc>"
endtry
if char == '^\d\+$' || type(char) == 0
let char = nr2char(char)
endif " It is the ascii code.
if char == "\<Esc>"
unlet w:first_call
return char
endif
redraw
if w:first_call
return char."\<Esc>gvA\<C-R>=Redraw()\<CR>\<F12>"
else
return char."\<Esc>gvlA\<C-R>=Redraw()\<CR>\<F12>"
endif
endfunction
function! Redraw()
redraw
return ''
endfunction
Em seguida, pressione Ctrl-v I como de costume e, em seguida, pressione F12 . Ele irá inserir e mostrar todas as linhas alteradas para cada pressionamento de tecla.
Nota: O script seria melhor se pressionar F12 entraria no modo de inserção, em vez de exigir que você pressionasse I a cada vez. Talvez o comando startinsert
em combinação com vnoremap
possa fazer isso.