Возьмите любую портянку с разной длиной строк, например:
nnoremap <silent> S :set opfunc=PasteReplace<CR>g@
function! PasteReplace(type, ...)
if a:0
silent exe "normal! `<" . a:type . "`>p"
elseif a:type == 'line'
silent exe "normal! '[V']p"
elseif a:type == 'block'
silent exe "normal! `[\<C-V>`]p"
else
silent exe "normal! `[v`]p"
endif
endfunction
nmap SS S$
- Максимально выделите вертикальный блок по доступной ширине, чтобы он оказался как-бы рваным, например от if до endif, пример: http://i.imgur.com/2gyfYBM.png
- Удалите содержимое
S-d
, пример: http://i.imgur.com/ExYP5PT.png - Верните содержимое
u
- Верните прошлое выделение
gv
Что вы видите? Вим забыл прошлое выделение и выделил блок по всей длине? Для меня например это критично.
Это и в виме и в неовиме.