Управление на специфични за проекта настройки за Vim/Neovim проекти.
Преглед
Говорих за управление на множество бази данни и проекти в предишните си статии. В някои случаи може да се наложи да управлявате множество проекти с конфигурации, специфични само за проектите.
В тази статия нека проучим наличните опции, които имаме във Vim/Neovim. Ще започна с най-простото решение и след това ще продължа да изследвам добавките, които можем да използваме.
exrc, vimrc, nvimrc
Ако зададете опцията exrc
във вашия .vimrc
или init.vim
файл, Vim/Neovim ще изпълни .exrc
(за Vim/Neovim), .vimrc
(Vim), .nvimrc
(Neovim), намерени в текущата директория, когато Vim/Neovim се стартира.
set exrc
От съображения за сигурност може също да искате да зададете опцията secure
заедно (вижте :h secure
)
set secure exrc
Когато secure
е включено, командите :autocmd
, shell
и write
не са разрешени в .nvimrc
, .vimrc
и .exrc
в текущата директория и командите за карта се показват.
От документацията за опцията secure
,
Когато е включено, командите “:autocmd”, shell и write не са разрешени в
“.nvimrc” и “.exrc” в текущата директория и командите за карта се показват
. Изключете го само ако знаете, че няма да срещнете
проблеми, или когато опцията 'exrc' е изключена.В Unix тази опция се
използва само ако “.nvimrc” или „.exrc“ не е ваша собственост. Това може да бъде
опасно, ако системите позволяват на потребителите да правят "chown". По-добре задайте
‘secure’ в края на вашия |init.vim| тогава.
Тази опция не може да бъде зададена от |modeline| или в |sandbox|, от
съображения за сигурност.
Документация за Neovim за опция exrc
,
Ако опцията 'exrc' е включена (което НЕ е по подразбиране), текущата
директория се търси за два файла. Използва се първият, който съществува,
останалите се игнорират.
- Файлът .nvimrc
- Файлът .exrc
Документация за Vim за опция exrc
,
Ако опцията ‘exrc’ е включена (което НЕ е по подразбиране), текущата
директория се търси за три файла. Използва се първият съществуващ,
останалите се игнорират.
— Файлът “.vimrc” (за Unix, Amiga) (*)
“_vimrc” (за Win32) (*)
— Файлът „_vimrc” (за Unix, Amiga) (*)
„.vimrc” (за Win32) (*)
— Файлът „.exrc” (за Unix, Amiga )
“_exrc” (за Win32)
Приставки за локален vimrc
Като алтернатива можете да използвате плъгини, за да активирате конфигурации на директория. Можете да използвате vim-localvimrc и vim-localrc за тази цел, което може да е по-сигурно от настройката exrc
.
Вграден FileType Plugin
Ако вашите проекти са на различни езици, един добър вариант определено е да се уверите в вградения плъгин за типове файлове (:h ftplugin
).
За Vim папката за използване обикновено е под ~/.vim/after/ftplugin
. напр. ако искате да замените настройките по подразбиране на Javascript, създайте файл с име javascript.vim
в тази папка с персонализираните настройки.
За Neovim, папката за използване обикновено е под ~/.config/nvim/after/ftplugin
.
напр. ако отидете в системната папка ftplugin
по подразбиране (в моя случай е /usr/local/share/nvim
), можете да видите конфигурациите по подразбиране за всички типове файлове.
AutoCmd
Друга възможност е да използвате командата auto. Има много начини, по които можете да го използвате.
Настройки, специфични за езика
Можете да зададете специфични за езика настройки, напр.
autocmd FileType markdown setlocal spell
autocmd FileType html setlocal shiftwidth=2
autocmd FileType php,html setlocal shiftwidth=2 expandtab
Или можете да извлечете файл, ако имате много настройки, напр.
autocmd FileType markdown source ~/.vim/settings/mysettings.vim
Централизирани настройки
Можете също така да централизирате настройките си в папка, като използвате командата auto (:h autocmd-pattern)
, напр.
:autocmd BufRead,BufNewFile /path/to/dir/** setlocal ts=4 sw=4
Също така, прочетете тази глава отLearn Vimscript the Hard Way
, за да разберете клопката на автоматичната команда и как да избегнете създаването на дублиращи се автоматични команди.
редактор-конфиг
editorconfig-vim е плъгин EditorConfig за Vim/Neovim. По принцип просто трябва да създадете .editorconfig
файл в папката на проекта и Vim/Neovim ще използва настройките с помощта на този плъгин.
Плъгинът EditorConfig Vim поддържа следните свойства на EditorConfig:
indent_style
indent_size
tab_width
end_of_line
charset
insert_final_newline
trim_trailing_whitespace
max_line_length
root
(използва се само от ядрото на EditorConfig)
От Vim/Nevom въведете :h editorconfig
, за да получите повече подробности от документацията, след като го инсталирате,
vim-следител
Този плъгин може да не ви позволи ръчно да конфигурирате специфични за проекта настройки. vim-sleuth автоматично настройва 'shiftwidth'
и 'expandtab'
евристично въз основа на текущия файл или, в случай че текущият файл е нов, празен или по друг начин недостатъчен, като разглежда други файлове от същия тип в текущата и родителската директории .
vim-прожекционист
projectionist.vim предоставя подробна конфигурация на проекта с помощта на проекции.
Нека видим тривиален пример за задаване на цветова схема за проект.
Създайте файл с име .projections.json
в папка със следното съдържание.
{ "*.html": { "colorscheme": [ "onedark" ] } }
Projectionist ще открие този файл и ще зададе буферна локална променлива (b:projectionist
) всеки път, когато се зарежда HTML файл.
Използвайки dofiles, които разработих в предишната си статия, създайте файл plugin/projectionist.vim
със следното съдържание.
augroup change_colorscheme autocmd! autocmd User ProjectionistActivate call s:change_colorscheme() augroup END function! s:change_colorscheme() abort let l:colorscheme = projectionist#query('colorscheme') if len(l:colorscheme) > 0 execute 'colorscheme '.l:colorscheme[0][1][0] endif endfunction
Рестартирайте Vim/Neovim и сега, ако отворите или създадете HTML файл в папката, цветовата схема автоматично ще се промени на onedark
.
Projectionist също има функции, които улесняват навигацията по проекта.
напр. със следния .projections.json
, който описва моята структура на проекта, мога лесно да навигирам във файловете на проекта.
{ "*.html": { "colorscheme": [ "onedark" ] }, "libs/*.py": { "alternate": "tests/test_{}.py", "type": "source" }, "tests/test_*.py": { "alternate": "libs/{}.py", "type": "test" }, "cli.py": { "type": "main" }, "lib/models/*.py": { "type": "model" } }
Сега,
- тип
:Emain
ще отвориcli.py
- отворете
utils.py
, въведете:A
иtest_utils.py
ще бъдат заредени. - open
test_utils.py,
тип:A
иutils.py
ще бъдат заредени. - тип
:Emodel users
иusers.py
ще бъдат заредени.
Имате различни опции за отваряне на файла в разделяне, раздел и т.н. Въведете :h projectionist
, за да разгледате документацията.
Ако търсите приставка, базирана на Lua, можете да изпробвате vim-projectconfig.
Разгледайте и следните статии!
Ако все още не сте член на Medium и искате да станете такъв, щракнете тук. (Част от вашата абонаментна такса ще бъде използвана за поддръжка на alpha2phi.)