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