在 vim 中使用覆盖,但我希望与回车符有不同的行为

在 vim 中使用覆盖,但我希望与回车符有不同的行为

所以我把文本放在 vim 中的特定区域......在此处输入图片描述

我使用 REPLACE 模式,这样在输入时就不会弄乱“矩形”的“远边”。如果在此模式下按下 Enter 键时,我的光标停留在下一行,而不会影响该行的其余部分,那就太好了。

但不幸的是,当我按下回车键时,会插入一个新行,最后我得到

在此处输入图片描述

这会弄乱“矩形”——有人知道如何获得我想要的行为吗?

答案1

经过一番修改,我想出了以下方法。这有点像是临时解决办法,但似乎可行:

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

相关内容