Vim filetype плагин конфликтует с сеансом

Проблема

Когда я восстанавливаю сеанс, будет невозможно загрузить мой плагин filetype.

Например, у меня есть плагин filetype для файла arduino ~/.vim/ftplugin/arduino.vim, и содержимое похоже на это.

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

Я создаю файл arduino с именем test.ino, чтобы сделать некоторую кодировку. Каждая вещь кажется довольно гладкой. Плагин 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      

Теперь что-то пошло не так, отображение ключей в моем плагине filetype 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 является действительной командой vim, принадлежащей плагину vim с именем syntastic.

Вопрос

Есть ли решение для решения этой проблемы? Под этим я имею в виду одновременное использование перформанса сеанса и файла типа.

Ответ 1

Наконец, я обойду эту проблему, используя плагин vim.

Что-то вроде улучшенной версии встроенной системы сеанса vim

Он называется vim-session

Ответ 2

Частичный ответ:

Плагины не загружаются непосредственно в .vimrc, если вы используете диспетчер подключаемых модулей. Их пути просто добавляются к 'runtimepath', и они впоследствии получены в процессе инициализации.

Вы можете попробовать добавить (т.е. в .vimrc) свой собственный путь к runtimepath, ПОСЛЕ окончания инициализации плагина. (т.е. для Vundle, после этой строки: call vundle#end()) Затем добавьте файл vim в your_custom_path/plugin, где вы поместите свой код в исходный файл сеанса.

Я не проверял всю информацию, которую я дал, поэтому извините за ошибки, но надеюсь, что это даст вам некоторые идеи.

См. :h startup, :h 'runtimepath'