1

Поэтому я помещаю текст в определенную область в VIM ...

Я использую режим REPLACE, чтобы при вводе я не испортил «дальний край» «прямоугольника». Было бы замечательно, если бы когда я нажал Enter в этом режиме, мой курсор оказался на следующей строке, не затрагивая остальную часть строки.

Но, к сожалению, когда я нажимаю ввод новой строки вставляется, и я в конечном итоге с

который портит «прямоугольник» - есть ли у кого-нибудь идеи о том, как получить поведение, которое я ищу?

1 ответ1

3

Повозившись, я придумал следующее. Это немного круто, но, похоже, работает:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .