2

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 ответ1

2

Режим вставки не предназначен для длительных периодов набора текста. Он существует только для преодоления давних ограничений Vim при работе в терминале. Вы не должны использовать его для чего-либо другого, кроме вставки текста средней кнопкой мыши.

Вот почему существует set pastetoggle="<F12>" : Хотите что-нибудь вставить? Нажмите <F12> чтобы войти в режим вставки, вставьте, нажмите <F12> раз, чтобы выйти из режима вставки.

Либо используйте "*p или "+p если ваша версия Vim поддерживает это.

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