Неизвестная ошибка функции при открытии Vim командой 'git commit', но не командой 'vim' - PullRequest
0 голосов
/ 18 ноября 2018

Когда я открываю Vim из командной строки с помощью vim, мой файл _vimrc запускается без ошибок.Когда git commit открывает vim в качестве редактора, возникает следующая ошибка:

C:\dev\settings>git commit                                                                   
hint: Waiting for your editor to close the file... 
Error detected while processing /c/Users/me/_vimrc:
line    1:                                                                 
E117: Unknown function: pathogen#infect                                    
E15: Invalid expression: pathogen#infect()        
Press ENTER or type command to continue

Почему pathogen#infect() вызывает ошибку, когда git открывает vim?Как мы это исправим?

Ответы [ 3 ]

0 голосов
/ 18 ноября 2018

Исходя из предположения VonC, мое первоначальное исправление должно было иметь как ~/.vim, так и ~/vimfiles.

PS> Copy-Item ~\vimfiles\ ~\.vim -Recurse
0 голосов
/ 19 ноября 2018

Git поставляется с собственной копией Vim, которая построена с путями в стиле Unix, поэтому он ищет ваши плагины (например, Pathogen) в ~/.vim/ вместо ~/vimfiles.

Дублирование вашей конфигурации - один из способов ее решения, но тогда вам придется поддерживать оба параллельно. Я думаю, что лучший подход - заставить все версии Vim использовать одну и ту же конфигурацию, адаптируя 'runtimepath' внутри вашего ~/.vimrc. Следующий фрагмент (который будет помещен вверху вашего ~/.vimrc) заставит Windows использовать пути в стиле Unix:

" On Windows, also use ~/.vim instead of ~/vimfiles; this makes synchronization
" across (heterogeneous) systems easier.
if has('win32') || has('win64')
    let &runtimepath = substitute(&runtimepath, '\C\V' . escape($HOME.'/vimfiles', '\'), escape($HOME.'/.vim', '\&'), 'g')
    if exists('&packpath')
        let &packpath = &runtimepath
    endif
endif
0 голосов
/ 18 ноября 2018

Как показано в выпуск 687 , это означает, что vim, как выполнено в контексте git bash, не распознает патоген.

...