vim использует предыдущую версию vimrc при некоторых обстоятельствах

185
Paolo

Со мной происходит забавная вещь vim: я внес некоторые изменения в пользователя, ~/.vimrcчтобы настроить строку состояния с помощью простой функции (изменения были внесены в несколько сохранений, пока я уточнял код), и теперь этот код загружается без каких-либо проблем, если я запускается vim FILEиз командной строки, но по какой-то причине он загружает предыдущую версию .vimrc(то есть ранее сохраненную версию), когда я запускаю sudo visudoили запускаю vimиз GUI (меню приложения).

Очень странно.

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

Я попытался копирование пользователя .vimrcк /rootи я побежал, grep -rI "functionName" ~но ни помогало.

Самое смешное, что, когда я внутри, vimсо сломанной строкой состояния, если я использую :e $MYVIMRCее, она загружает правильную, так что я тоже могу ее использовать, :source $MYVIMRCи тогда все выглядит нормально (то есть строка состояния работает, и ошибка синтаксиса исчезла) ,

Любые предположения о том, почему при vimзапуске, в этих двух ситуациях (и, возможно, больше), использует предыдущую версию?

1
Ответ Инго побудил меня провести тройную проверку кода функции, и это была еще одна ошибка в цепочке операторов if, которые поочередно запускались в зависимости от открытого файла. Это очень помогло пройти через журнал vim. Paolo 5 лет назад 0
комментарий удален Paolo 5 лет назад 0

1 ответ на вопрос

1
Ingo Karkat

Когда я слышу «устаревшую конфигурацию», я подозреваю следующее:

  • неработающая символическая ссылка / забыл скопировать пользовательский конфиг в root (это специфично для вашего случая использования под root)
  • Хранимая сессия ( :mksession) включает в себя старый конфиг и автоматически восстанавливается (здесь это не так)
  • проблема среды (у Vim есть несколько расположений и переопределений для поиска конфигурации, как указано ниже :help startup)

Я бы проверил :scriptnamesв сеансе сломанного корня в первую очередь. Это должно сказать, какой из ~/.vimrcних выбран и какие ошибочно загружены любые другие (альтернативные) конфиги. Если это не дает никаких подсказок, вы можете записать полный журнал сеанса Vim с vim -V20vimlog(возможно, с префиксом sudoв вашем случае, чтобы возникла проблема). После выхода из Vim изучите vimlogфайл журнала и, возможно, добавьте комментарии к нему, ~/.vimrcчтобы вы могли различать разные версии файлов.

Похожие вопросы