У мене проблема з 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. Щоб створити його, клацніть правою кнопкою миші у Файловому провіднику, де ви хочете клацнути ярлик, а потім виберіть Створити -> Ярлик і вставте текст ярлика. Можливо, вам доведеться змінити шлях Vim, якщо ваш Vim встановлений в іншому місці.
-U NONEякщо є -u NONE.
Існує -Dпараметр Vim, спеціально для налагодження, який перейде в режим налагодження після виконання першої команди зі скрипту.
Наприклад, щоб запустити Vim в режимі налагодження без плагінів, запустіть як:
vim --noplugin -D
Введіть n/, nextщоб проаналізувати наступний рядок і продовжуйте натискати Enter.
І contабо qповернутися до vimінтерфейсу.
Якщо ви використовуєте версію GUI, guiвведіть команду у свій vimrc, щоб запустити налагодження відразу після цієї команди.
Натисніть Ctrl+ dдля переліку доступних команд
Детальніше:
:help debug-scriptsЯк уже згадувалося, спочатку спробуйте vim -u NONE -U NONE -Nпереконатися, що ваш вініл працює добре.
Потім запустіть 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