почему возникает ошибка `E523: не разрешать здесь` в простой функции? - PullRequest
0 голосов
/ 23 апреля 2020

почему это вызывает ошибку E523: Not allow here в простой функции?

function! CheckMode()
    echom mode()
    exec "normal \<Esc>"
    " normal ^[
    " call feedkeys('\<esc>')
endfunction

inoremap <expr> <Esc> CheckMode()

На самом деле я хочу сделать:

память в «режиме вставки» и автоматический запуск вставки после возвращения. Например:

function! LeaveBuffer(key)
    let b:is_insert_mode = mode() == 'i'
    if b:is_insert_mode
        exec "normal! \<C-\\>\<C-n>"
    endif
    exec "normal! \<C-w>".a:key
endfunction

noremap <expr> <C-w>h LeaveBuffer("h")
noremap <expr> <C-w>j LeaveBuffer("j")
noremap <expr> <C-w>k LeaveBuffer("k")
noremap <expr> <C-w>l LeaveBuffer("l")


function! EnterBuffer()
    if b:is_insert_mode
        startinsert
    endif
endfunction

autocmd BufEnter,TermOpen term://** call EnterBuffer()
...