粘贴模式中按 F2

粘贴模式中按 F2

Vim 有一个很棒的粘贴模式,其中缩写和映射被忽略。令人沮丧的是,即使是不映射到可粘贴 ASCII 字符的键(例如功能键),也会按字面意思粘贴。例如,键 F2 被粘贴为<F2>。有什么办法可以解决这个问题吗?

请注意,pastetoggle实际上可以将其映射到功能键以轻松退出粘贴模式,但是我正在编写的函数在进入或退出粘贴模式时会更改其他值(例如启用或禁用行号和其他内容)。因此,我真的很想找到一种解决方法。

作为参考,这是该功能的当前版本(卡在粘贴模式):

iab if if<Space>(<Space>{{<Esc>kA<Left><Left><Left><Left><C-R>=Eatchar('\s')<CR>

" Triple-toggle Insert Modes: coding, prose, and paste
let g:insertModeGlobal=1
function! Te()

    if g:insertModeGlobal==3
        " Was in paste insert mode, go to coding insert mode

        set nu
        set nopaste

        let g:insertModeGlobal=4
    endif


    if g:insertModeGlobal==2
        " Was in prose insert mode, go to paste insert mode

        set nolinebreak
        nnoremap j j 
        nnoremap k k 
        nnoremap gj gj
        nnoremap gk gk
        set relativenumber
        execute ":Signs"
        iab if if<Space>(<Space>{{<Esc>kA<Left><Left><Left><Left><C-R>=Eatchar('\s')<CR>

        set nonu
        set paste

        let g:insertModeGlobal=3
    endif

    if g:insertModeGlobal==1
        " Was in coding insert mode, go to prose insert mode

        set linebreak
        nnoremap j gj
        nnoremap k gk
        nnoremap gj j
        nnoremap gk k
        set number
        execute ":DisableSigns"
        iab if if

        let g:insertModeGlobal=2
    endif

    if g:insertModeGlobal==4
        let g:insertModeGlobal=1
    endif

endfunction

答案1

粘贴模式不适合长时间打字。它的存在只是为了克服 Vim 在终端中运行时的长期限制。除了使用鼠标中键粘贴文本外,您不应将其用于任何其他用途。

这就是set pastetoggle="<F12>"存在的原因:想要粘贴某些内容?点击<F12>进入粘贴模式,粘贴,<F12>再次点击退出粘贴模式。

或者,如果您的 Vim 版本支持,请使用"*p或。"+p

相关内容