vim filetype插件与session冲突

时间:2015-12-06 09:30:08

标签: session vim

问题

当我从会话中恢复时,加载我的文件类型插件是不可能的。

例如,我有一个〜/ .vim / ftplugin / arduino.vim 的arduino文件类型插件,内容是这样的。

SyntasticToggleMode
call feedkeys("\<CR>")
nnoremap <leader>s :w<cr>:ArduinoVerify<cr>
nnoremap M :ArduinoUpload<cr>

我创建了一个名为test.ino的arduino文件来进行编码。 每件事看起来都很顺利。 filetype插件已正确加载。

然后我用以下命令关闭vim。

  • :mksession!
  • :wviminfo viminfo
  • :qa

现在有一个名为Session.vim的会话文件。 然后我再次打开vim,它会自动加载会话,因为我的 .vimrc 中有类似的内容。

filetype indent plugin on 
if filereadable("Session.vim")
    source Session.vim          
endif         
if filereadable("viminfo")
    rviminfo viminfo
endif      

现在出了问题,我的arduino文件类型插件中的键映射无法正常工作。 它还打印一些这样的错误消息。 Error detected while processing /home/lotp/.vim/ftplugin/arduino.vim: line 1: E492: Not an editor command: SyntasticToggleMode"sketch_dec06a.ino" "sketch_dec06a.ino" 12L, 150C E492: Not an editor command: SyntasticToggleMode

确实SyntasticToggleMode是属于名为syntastic的vim插件的有效vim命令。

问题

有解决方案可以解决这个问题吗? 我的意思是同时使用session和filetype插件。

2 个答案:

答案 0 :(得分:1)

部分答案:

如果使用插件管理器,则插件不会直接加载到.vimrc中。它们的路径只是附加到'runtimepath',它们是在初始化过程的后期获得的。

在插件初始化结束后,您可以尝试将自己的自定义路径(即.vimrc)添加到runtimepath。 (即,对于Vundle,在此行之后:call vundle#end())然后在your_custom_path/plugin中添加一个vim文件,您可以在其中放置代码以获取会话文件。

我没有查看我提供的所有信息,对于错误感到抱歉,但希望它能给你一些想法。

请参阅:h startup:h 'runtimepath'

答案 1 :(得分:1)

最后,我使用vim插件解​​决了这个问题。

这是内置vim会话系统改进版的一些内容

它被称为vim-session