我有一个函数,我已经在我的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
我使用F12键来调用该函数,并将函数映射到F12,如下所示:
map <F12> :call ToggleSyntax()<cr>
imap <F12> <c-o>:call ToggleSyntax()<cr>
我遇到的问题是我无法从插入模式调用ToggleSyntax函数。这对我来说非常混乱,因为我使用了imap处理程序,但是,此功能仅适用于命令模式。我无法弄清楚如何让它工作,任何帮助都将非常感谢!谢谢!
答案 0 :(得分:8)
对我来说,你的功能也会在插入模式下打开 paste ,但它不会将其关闭(并且语法打开)。原因是当:set paste
时,不适用插入模式映射。这是'paste'
的一个重要方面,另请参阅:help 'paste'
。
在插入模式下切换的唯一方法是
:set pastetoggle=<F12>
(该选项是为此目的明确制作的)但是,您将失去切换您的函数所提供的并行语法。