VIM:使用imap从插入模式调用函数?
我在vimrc中编写了一个函数,用于关闭语法并设置粘贴。函数如下所示:VIM:使用imap从插入模式调用函数?,vim,Vim,我在vimrc中编写了一个函数,用于关闭语法并设置粘贴。函数如下所示: function! ToggleSyntax() if g:syntaxon == 1 syntax off set paste let g:syntaxon = 0 else syntax on set nopaste let g:syntaxon = 1 endif endfunction map <F12> :call ToggleSyntax()<cr> imap <F12> &
function! ToggleSyntax()
if g:syntaxon == 1
syntax off
set paste
let g:syntaxon = 0
else
syntax on
set nopaste
let g:syntaxon = 1
endif
endfunction
map <F12> :call ToggleSyntax()<cr>
imap <F12> <c-o>:call ToggleSyntax()<cr>
我使用F12键调用函数,并将函数映射到F12,如下所示:
function! ToggleSyntax()
if g:syntaxon == 1
syntax off
set paste
let g:syntaxon = 0
else
syntax on
set nopaste
let g:syntaxon = 1
endif
endfunction
map <F12> :call ToggleSyntax()<cr>
imap <F12> <c-o>:call ToggleSyntax()<cr>
map:call-ToggleSyntax()
imap:calltogglesyntax()
我遇到的问题是无法从插入模式调用ToggleSyntax函数。这让我非常困惑,因为我使用了imap处理程序,但这个函数仍然只能在命令模式下工作。我不知道如何让它工作,任何与此相关的帮助都将不胜感激!谢谢大家! 对我来说,您的函数也会在插入模式下打开粘贴,但不会将其关闭(和语法打开)。原因是当
:设置粘贴时,不应用插入模式映射。这是“粘贴”
的一个重要方面,另请参见:帮助“粘贴”
在插入模式下切换的唯一方法是
:set pastetoggle=<F12>
:设置粘贴切换=
(该选项明确用于此目的)但是,您将失去函数提供的并行语法切换功能。Tip:;它使映射不受重映射和递归的影响;但这对你的问题没有帮助。