Работя върху няколко проекта, всеки от които използва различен стил на отстъп (за различни типове файлове). Например 1 раздел на ниво на отстъп, 2 или 4 интервала и т.н. Как мога да автоматизирам превключването между тези различни стилове? Обикновено предпочитам отстъп с табулатори, но ми омръзна да пиша :set expandtabs през цялото време, когато работя с код с отстъпи на интервали. Възможните решения биха включвали зареждане на част от конфигурацията на vim въз основа на пътя на файла или някаква конфигурация в корена на проекта. Има ли плъгин, който да реши това за мен по елегантен начин?
Как мога да постигна специфичен за проекта отстъп във vim?
Отговори (5)
- Вижте опцията
cinoptions
и опциятаsofttabstop
(иexpandtab
, но вие знаете това). Във вашия '~/.vimrc' дефинирайте автоматични команди за въвеждане на буфер за всяка директория, където съхранявате източниците на някакъв проект като:
augroup ProjectSetup au BufRead,BufEnter /path/to/project1/* set et sts=2 cindent cinoptions=... au BufRead,BufEnter /path/to/project2/* set noet sts=4 cindent cinoptions=... augroup END
Ако проектът има смесица от езици и се нуждае от различни настройки за тогава, можете също да добавите разширения като:
au BufRead,BufEnter /path/to/project1/*.{c,h} set noet sts=0 cindent cinoptions=... au BufRead,BufEnter /path/to/project1/*.py set et sts=4
FileType
събитие за автокоманди. Но неговият модел съвпада с типа на файла, така че трябва сами да проверите пътя. Или можете да поставите код в ~/.vim/after/ftplugin/<language>.vim
, но отново трябва сами да проверите пътя.
- person Jan Hudec; 09.01.2014
Използвам приставката localvimrc, която прави точно това, което искате:
Понякога, когато работите върху различни проекти, имате проблема, че те използват различни отстъпи, разширяване на раздели и така нататък. Имате нужда от vimrc за всеки проект, който заменя вашите предпочитани настройки от ~/.vimrc
EditorConfig и това е Vim плъгин:
Какво е EditorConfig?
EditorConfig помага на разработчиците да дефинират и поддържат последователни стилове на кодиране между различни редактори и IDE. Проектът EditorConfig се състои от файлов формат за дефиниране на стилове на кодиране и колекция от добавки за текстов редактор, които позволяват на редакторите да четат файловия формат и да се придържат към дефинираните стилове. Файловете EditorConfig са лесни за четене и работят добре със системите за контрол на версиите.
Освен няколко други неща, той ви позволява да зададете отстъп, който ще се прилага само за този проект. Това е много прост и най-важното стандартизиран начин, поддържан от много различни редактори и IDE-и, така че ще зададе правилния отстъп не само за вас, но вероятно и за всички хора, работещи по даден проект.
Просто трябва да създадете .editorconfig
файл в корена на проекта и Vim автоматично ще го намери (ако приемем, че имате инсталиран плъгин), задавайки правилните стойности. Създаването на .editorconfig
файла за всеки проект постига това, от което се нуждаете - специфичен за проекта отстъп.
Примерен конфигурационен файл:
root = true
[*]
charset = utf-8
end_of_line = lf
indent_style = space
indent_size = 4
insert_final_newline = true
trim_trailing_whitespace = true
[*.{js,html}]
indent_size = 2
[*.css]
indent_size = 4
Да, има: Ако използвате проекта Плъгин, можете да посочите файл, чието съдържание се оценява всеки път, когато отворите файл на проекта (този файл се нарича in.vim
). Обратното на in.vim
е out.vim
: това се изпълнява всеки път, когато напуснете проекта.
:make
или :grep
) или изричната команда (:e %:r.h
често е доста полезна в C /C++).
- person Jan Hudec; 30.05.2011
За всичко, което Editorconfig поддържа, правилният отговор е да го използвате, вижте отделния отговор за това.
За други настройки обаче можете да използвате .vimrc
файлове с set exrc secure
.
Вижте :h exrc
:
d. If the 'exrc' option is on (which is NOT the default), the current
directory is searched for three files. The first that exists is used,
the others are ignored.
- The file ".vimrc" (for Unix, Amiga and OS/2) (*)
"_vimrc" (for MS-DOS and Win32) (*)
- The file "_vimrc" (for Unix, Amiga and OS/2) (*)
".vimrc" (for MS-DOS and Win32) (*)
- The file ".exrc" (for Unix, Amiga and OS/2)
"_exrc" (for MS-DOS and Win32)
Вижте :h secure
:
When on, ":autocmd", shell and write commands are not allowed in
".vimrc" and ".exrc" in the current directory and map commands are
displayed. Switch it off only if you know that you will not run into
problems, or when the 'exrc' option is off. On Unix this option is
only used if the ".vimrc" or ".exrc" is not owned by you. This can be
dangerous if the systems allows users to do a "chown". You better set
'secure' at the end of your ~/.vimrc then.
This option cannot be set from a |modeline| or in the |sandbox|, for
security reasons.