Usando sobrescrever no vim, mas gostaria de um comportamento diferente dos retornos de carro

1

Então, estou colocando texto em uma área específica no vim ...

EstouusandoomodoREPLACEparanãoatrapalhara"borda mais distante" do "retângulo" quando digito. Seria ótimo se, quando eu pressionasse entrar nesse modo, meu cursor acabasse na próxima linha sem afetar o restante da linha.

Mas, infelizmente, quando pressiono enter, uma nova linha é inserida e eu acabo com

que bagunça o 'retângulo' - alguém tem alguma idéia sobre como obter o comportamento que estou procurando?

    
por Joe 11.03.2012 / 12:51

1 resposta

3

Depois de mexer, eu vim com o seguinte. É um pouco de kluge, mas parece funcionar:

augroup ReplaceReturn
    autocmd!
    autocmd InsertEnter * if v:insertmode ==? 'r' | call s:RedefineReturn() | endif
augroup END

function! s:RedefineReturn()
    inoremap <cr> <down><c-o>0
    inoremap <silent> <esc> <esc>:call <SID>UndefineReturn()<CR>
endfunction

function! s:UndefineReturn()
    if maparg('<cr>', 'i') != ''
        iunmap <cr>
        iunmap <esc>
    endif
endfunction
    
por 11.03.2012 / 20:33