У меня проблема с Vim, и я думаю, что она может быть в моем vimrc
файле (или мне сказали, что это может быть мой vimrc
файл).
Как мне это проверить? Если это мой vimrc
файл, как я знаю , где именно проблема заключается?
У меня проблема с Vim, и я думаю, что она может быть в моем vimrc
файле (или мне сказали, что это может быть мой vimrc
файл).
Как мне это проверить? Если это мой vimrc
файл, как я знаю , где именно проблема заключается?
Ответы:
Первое, что вы хотите сделать, это запустить Vim с настройками по умолчанию:
vim -u NONE -U NONE -N
Он -u NONE
запрещает Vim загружать ваш vimrc, -U NONE
запрещает Vim загружать ваш gvimrc и -N
говорит Vim использовать несовместимый режим (это не требуется, но большинство пользователей Vim не привыкли к «совместимому» режиму). Обратите внимание , что NONE
это требуется , чтобы быть во всех заглавных буквах.
В Windows вы можете добавить эти флаги, создав новый ярлык 1 .
Если проблема остается, то вы знаете, что это не что-то в вашем vimrc.
Если проблема исчезнет, то теперь это вызвано чем-то в вашем файле vimrc.
Ура! Иди и задай свой вопрос. Не забудьте упомянуть, что вы пытались запустить Vim без файла vimrc!
Если вы этого еще не сделали, вы, возможно, захотите сначала сохранить резервную копию вашего файла vimrc.
Следующее, что вы, вероятно, захотите сделать, это сначала отключить все плагины; плагины могут немного измениться в Vim. Если это решит проблему, попробуйте выяснить,
какой плагин, повторно включив их один за другим. После того, как вы выяснили, какой плагин именно вызывает проблему, вы можете попробовать и исправить ее, прочитав документацию по этому плагину и / или задав вопрос, помеченный тегом plugin-<name>
.
Если это не плагин, и вы не имеете ни малейшего представления, что является причиной вашей проблемы, тогда это процедура проб и ошибок. Закомментируйте одну или несколько строк в вашем vimrc, запустите Vim, проверьте, возникает ли проблема, и повторяйте эту процедуру, пока проблема не перестанет возникать. Самый быстрый способ сделать это:
В конце концов у вас должна быть одна опция или комбинация нескольких опций, которая вызывает вашу проблему. Вы можете узнать больше о любой опции в Vim, используя:
:help 'option_name'
Здесь важны кавычки, они обычно работают без них, но иногда вы попадаете не на ту страницу, если их опускаете.
Если вы все еще не уверены, прочитав страницу справки, вы знаете, где задать вопрос ;-)
Если вы хотите изолировать один плагин, возможно, задать вопрос об этом, вы хотите загрузить как можно меньше, но все равно загрузить плагин; Вы можете легко сделать это с помощью функции пакетов Vim. Для этого требуется Vim 8 или достаточно свежая версия Neovim.
Создать новый пустой каталог; мы будем использовать ~/plugin
путь в этом примере. Теперь поместите плагин в обычный pack/plugins/start/$name
каталог. Например:
git clone https://github.com/fatih/vim-go.git ~/plugin/pack/plugins/start/vim-go
Создайте test-vimrc
файл со следующим содержимым; это гарантирует, что Vim будет загружать плагины из ~/plugin
каталога, а не из ~/.vim
каталога:
set nocompatible
set packpath=~/plugin,/usr/share/vim/vimfiles,/usr/share/vim/vim80,/usr/share/vim/vimfiles/after,~/plugin/after
packloadall!
syntax on
filetype plugin indent on
Запустите Vim с:
vim -U NONE -u ~/test-vimrc
Теперь у вас есть минимальный vimrc только с этим одним плагином.
Сноски
1 Например: на 64 - битной Windows, ярлык будет выглядеть примерно так: "C:\Program Files (x86)\Vim\vim74\vim.exe" -u NONE -U NONE -N
. Чтобы создать его, щелкните правой кнопкой мыши в проводнике, где вы хотите ярлык, затем выберите New -> Shortcut и вставьте текст ярлыка. Возможно, вам придется изменить путь Vim, если ваш Vim установлен в другом месте.
-U NONE
если у вас есть -u NONE
.
-D
Специально для отладки есть параметр Vim, который после выполнения первой команды из скрипта перейдет в режим отладки.
Например, чтобы запустить Vim в режиме отладки без каких-либо плагинов, запустите как:
vim --noplugin -D
Введите n
/ next
для разбора следующей строки и продолжайте нажимать Enter.
И cont
или q
вернуться к vim
интерфейсу.
Если вы используете версию с графическим интерфейсом, поместите gui
команду в свой vimrc, чтобы начать отладку сразу после этой команды.
Нажмите Ctrl+ dдля получения списка доступных команд
Читать далее:
:help debug-scripts
Как уже упоминалось, сначала vim -u NONE -U NONE -N
убедитесь, что ваш vanilla vim работает нормально.
Затем запустите Vim нормально и проверьте
:messages
изнутри vim после проблемы, которая покажет все предупреждения и ошибки.
Наконец, запустите vim с помощью следующей команды
vim -V9logfile.log
который создаст файл журнала с именем logfile.log
, -V9
это уровень ведения журнала и попытается воспроизвести вашу проблему.
Еще один совет: как бы ни казался пещерный человек, мне нравится добавлять: echom «message» в мой .vimrc, чтобы увидеть, что выполняется, а что нет.
Например
if executable('ag')
:echom "AG FOUND"
...
endif
Это помогает мне быстро увидеть, выполняется ли блок if и т. Д. Сообщение будет напечатано на консоли при следующем запуске vim.
echom
другую интересную команду, :messages
чтобы получить полный журнал сообщений, отраженных. Иногда полезно посмотреть на них после запуска.
Одна вещь, которую я нашел, помогает хранить набор переменных, которые переключают ваши части, .vimrc
так что вы можете отключать или включать их части без необходимости комментировать вещи. Это также имеет приятный побочный эффект, заставляя вас думать об организации вашей .vimrc
.
" feature toggles in vimrc
let g:vimrc_feat_pathogen = 1
let g:vimrc_feat_core_minimal = 1
let g:vimrc_feat_matchit = 1
let g:vimrc_feat_options = 1
let g:vimrc_feat_colors_and_highlight = 1
let g:vimrc_feat_key_rebinding_arpeggio = 1
let g:vimrc_feat_key_rebinding = 1
let g:vimrc_feat_autocommand_group = 1
let g:vimrc_feat_custom_definitions = 1
let g:vimrc_feat_load_opam = 1
Вот пример раздела, охраняемого if
:
if g:vimrc_feat_core_minimal
set nocompatible
filetype plugin indent on
syntax on
endif
Мое время загрузки vimrc было очень медленным, около 400 мс, и я сократил его до 20 мс только удалив эту строку:
silent !mkdir ~/.config/nvim/backups > /dev/null 2>&1
Убедитесь, что у вас нет вызовов на внешние команды, подобные этим.
Вот очень простая процедура, с которой можно начать.
:source %
или:so $MYVIMRC