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