Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VIM:使用imap从插入模式调用函数?_Vim - Fatal编程技术网

VIM:使用imap从插入模式调用函数?

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> &

我在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> <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:;它使映射不受重映射和递归的影响;但这对你的问题没有帮助。