F2 no modo Colar

2

O Vim tem um ótimo modo colar , no qual as abreviações e os mapeamentos são ignorados. Frustrantemente, até as teclas que não mapeiam para caracteres ASCII pastáveis, como as teclas de função, são coladas literalmente. Por exemplo, a chave F2 é colada como <F2> . Existe alguma coisa em torno disso?

Observe que pastetoggle pode, de fato, ser mapeado para uma tecla de função para deixar o modo colar, mas a função que estou escrevendo altera outros valores ao entrar ou sair do modo de colar (como ativar ou desativar números de linha e outras coisas ). Portanto, eu realmente gostaria de encontrar uma solução alternativa.

Para referência, aqui está a versão atual da função (que fica presa no modo colar):

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
    
por dotancohen 31.08.2012 / 15:20

1 resposta

2

O modo de colagem não se destina a longos períodos de digitação. Ele existe apenas para superar as limitações de longa data do Vim quando executado em um terminal. Você não deve usá-lo para nada além de colar texto com o botão do meio do mouse.

É por isso que existe set pastetoggle="<F12>" : quer colar algo? Pressione <F12> para entrar no modo de colagem, cole e pressione <F12> novamente para sair do modo de colagem.

Como alternativa, use "*p ou "+p se sua versão do Vim for compatível.

    
por 31.08.2012 / 16:30

Tags