VIm snipmate <TAB> автозаполнение не работает
Это первый раз, когда я пытаюсь использовать снипмат с VIm 7.3 в Ubuntu 12.04.
мой .vimrc
Конфигурация:
" kill vi compatibility
set nocompatible " be iMproved
" -------------------------------------
" ---------snipmate--------------------
" -------------------------------------
Bundle "MarcWeber/vim-addon-mw-utils"
Bundle "tomtom/tlib_vim"
Bundle "honza/vim-snippets"
Bundle "garbas/vim-snipmate"
" -------------------------------------
filetype plugin on
Я верю, что это все, что я хочу, а затем :BundleInstall
,
Древовидная структура моего .vim/bundle
является
prayag@prayag:~$ tree -d .vim/bundle/
.vim/bundle/
|-- vim-colors-solarized
| |-- autoload
| |-- bitmaps
| |-- colors
| `-- doc
|-- vim-snipmate
| |-- after
| | `-- plugin
| |-- autoload
| |-- doc
| |-- ftplugin
| |-- plugin
| `-- syntax
|-- vim-snippets
| |-- UltiSnips
| |-- autoload
| `-- snippets
| |-- coffee
| `-- javascript
`-- vundle
|-- after
| |-- ftplugin
| `-- plugin
|-- autoload
| `-- vundle
|-- doc
|-- ftplugin
|-- plugin
|-- syntax
`-- test
`-- files
139 directories
НО, когда я пытаюсь проверить Java-код main
фрагмент кода,
$ vi App.java
main
После нажатия <TAB>
дает мне следующий результат / ошибка
main<Plug>snipMateNextOrTrigger
:verbose imap <Plug>snipMateNextOrTrigger
дает мне
No mapping found
с finish
раздел прокомментирован в plugin/snipMate.vim
, :verbose imap <Plug>snipMateNextOrTrigger
дает мне следующую информацию,
i <Plug>snipMateNextOrTrigger * <C-R>=snipMate#TriggerSnippet()<CR>
Last set from ~/.vim/bundle/vim-snipmate/plugin/snipMate.vim
и при нажатии <TAB>
Error detected while processing /home/prayag/.vim/bundle/vundle/autoload/snipMate.vim:
line 15:
E122: Function <SNR>84_RemoveSnippet already exists, add ! to replace it
Тот же результат / ошибка, которую я получаю при следующей конфигурации в .vimrc
,
:imap <C-J> <Plug>snipMateNextOrTrigger
:smap <C-J> <Plug>snipMateNextOrTrigger
Та же конфигурация отлично работала для другой машины с Ubuntu 13.04.
Должно быть, я что-то делаю не так, но не могу понять.
Рекомендации
1 ответ
Прежде всего, я предлагаю вам удалить :set nocompatible
из вашего файла vimrc. Vim автоматически сбрасывает 'cp'
вариант, если при запуске он находит личный файл vimrc (не системный файл vimrc), и если вы когда-либо :source ~/.vimrc
тогда это может иметь запутанные результаты.
Полный ответ на ваш вопрос будет очень большой блок-схема устранения неполадок. Это было бы хорошо, но я не собираюсь так усердно работать. Вот краткое изложение разговора, который мы провели в комментариях для диагностики этой проблемы.
У меня установлен snipMate, но когда я вхожу
"main<Tab>"
в режиме вставки я получаю"main<Plug>snipMateNextOrTrigger"
,
Что :verbose imap <Tab>
а также :verbose set cpo?
сказать тебе? Проверьте :version
для "<Tab>
или вы находитесь в совместимом режиме, или ваша версия vim может не поддерживать карты или может не поддерживать <Tab>
обозначения в картах.)
":verbose imap <Tab>"
показывает, что "<Tab>"
сопоставлен с"<Plug>snipMateNextOrTrigger"
в"~/.vim/bundle/vim-snipmate/after/plugin/snipMate.vim"
и другие вещи выглядят правильно.
Как насчет :verbose imap <Plug>snipMateNextOrTrigger
? (Проблема, кажется, в том, что <Tab>
сопоставлен с чем-то; что-то должно быть переназначено, но это не так.)
":verbose imap <Plug>snipMateNextOrTrigger"
дает мне "Картографирование не найдено".
Это проблема. Файл plugin / snipMate.vim содержит строку inoremap <silent> <Plug>snipMateNextOrTrigger <C-R>=snipMate#TriggerSnippet()<CR>
, Либо у вас нет этого файла, либо отсутствует эта строка, либо :source
D, когда Vim запускается. Или, может быть, переменная loaded_snips
определяется где-то еще. Посмотри файл, проверь :scriptnames
сразу после запуска vim и выполните поиск "loaded_snips "в других ваших файлах запуска. Я думаю, что есть и другие возможности, такие как :imapclear
, но это кажется маловероятным.
Файл там, и имеет правильную строку. (Сначала я посмотрел "after / plugin / snipMate.vim" вместо "plugin / snipMate.vim".) Я проверил ": scriptnames", и он указан в списке. Я не проверял другие файлы, определяющие "загруженные_знипы", но закомментировал
if exists('loaded_snips') || &cp || version < 700
finish
endif
и получил ошибку от "snipMate.vim" в другом каталоге. Я удалил этот файл, переустановил snipMate, и теперь он работает.