From 1fe94cb008e062ba42e09c284e32cf10c912689e Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Fri, 17 Jun 2022 08:16:33 +0800 Subject: [PATCH] docs: improve 'insertmode' emulation #18962 The current emulation script enters Insert mode much too frequently. Using only BufWinEnter seems to be a closer simulation. Also add a few more mappings. --- runtime/doc/vim_diff.txt | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/runtime/doc/vim_diff.txt b/runtime/doc/vim_diff.txt index 8e67cb0923..385a5f8f61 100644 --- a/runtime/doc/vim_diff.txt +++ b/runtime/doc/vim_diff.txt @@ -550,10 +550,31 @@ Options: *'imstatusfunc'* *'imsf'* *'insertmode'* *'im'* Use the following script to emulate 'insertmode': > - autocmd VimEnter,CmdlineLeave,WinEnter,WinScrolled,BufEnter * silent! if &modifiable | startinsert | endif - inoremap - inoremap - nnoremap i + autocmd BufWinEnter * startinsert + inoremap + inoremap + inoremap + inoremap suspend + noremap + snoremap + noremap startinsert + cnoremap startinsert + inoremap + autocmd CmdWinEnter * noremap + autocmd CmdWinEnter * inoremap + + lua << EOF + vim.on_key(function(c) + if c == '\27' then + local mode = vim.api.nvim_get_mode().mode + if mode:find('^[nvV\22sS\19]') and vim.fn.getcmdtype() == '' then + vim.schedule(function() + vim.cmd('startinsert') + end) + end + end + end) + EOF < *'macatsui'* *'maxcombine'* *'mco'*