4

我在 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 处理程序,但是这个函数仍然只能在命令模式下工作。我不知道如何让它工作,对此的任何帮助将不胜感激!谢谢你!

4

1 回答 1

8

对我来说,您的函数也会在插入模式下打开粘贴,但不会将其关闭(并打开语法)。原因是当没有插入模式映射适用:set paste时。这是 的一个重要方面,另请参阅。'paste':help 'paste'

在插入模式下切换的唯一方法是

:set pastetoggle=<F12>

(该选项是为此目的而明确制定的)但是,您将失去您的函数提供的并行语法切换。

于 2013-04-26T19:09:43.310 回答