Установите Vim shiftwidth и tabstop на основе каталога
У меня есть проект, над которым я сейчас работаю, где стандартом кодирования является использование отступов в 2 раза. Однако в других проектах я использую 4 отпечатка в пространстве.
Есть ли простой способ сказать vim, что все файлы в определенном каталоге должны иметь tabstop из двух пробелов?
Ответы
Ответ 1
Почтенный Тим Папа только что выпустил плагин Sleuth, который автоматически определяет ширину и табуляцию (среди других параметров буфера) на основе того, что используемый в текущем файле (или, что невероятно, если это новый буфер, основанный на соседних файлах).
Ответ 2
Используйте autocmd
, который соответствует каталогу и устанавливает любые параметры, которые вам нужны:
au BufRead,BufNewFile,BufEnter /path/to/dir/* setlocal ts=2 sts=2 sw=2
Это также относится к файлам в подкаталогах.
Как указывает Инго Каркат, такие команды должны использовать setlocal
вместо set
, чтобы быть конкретным для буферов.
Ответ 3
Если вы не беспокоитесь о центральной конфигурации исключений в каталоге проекта, решение :autocmd
от Nikita Kouevda прост и эффективен. С другой стороны, если вы хотите, чтобы конкретная конфигурация была сохранена в проекте (и не хотите вставлять ее во все файлы с помощью modelines), у вас есть следующие две опции:
Если вы всегда запускаете Vim из корневого каталога проекта, встроенный
:set exrc
позволяет считывать файл .vimrc
из текущего каталога. Вы можете разместить там команды :set ts=2 sw=2 et
.
В противном случае вам понадобится помощь плагина; на vim.org есть несколько; Я могу порекомендовать локальный плагин.
Ответ 4
Некоторое время назад я написал плагин именно для этих нужд: Vimprj. Это плагин для управления опциями для разных проектов.
Один парень даже написал хорошую статью об этом.
В скором времени вам нужно создать файл .vimprj
в корне вашего проекта (или .vimprj
с некоторыми .vim
файлами), и каждый раз, когда вы переключаетесь на этот проект, этот файл или каталог .vimprj
будет быть источником.
Подробнее прочитайте страницу плагина, и не стесняйтесь спрашивать меня, есть ли у вас какие-либо проблемы с этим плагином.
Ответ 5
embear/vim-localvimrc https://github.com/embear/vim-localvimrc работал хорошо.
Я создаю файл .lvimrc
, содержащий:
setlocal noexpandtab
setlocal shiftwidth=8
setlocal tabstop=8
и он превосходит по умолчанию конфигурацию autocmd FileType
от моего .vimrc
для каждого файла дочернего каталога, содержащего .lvimrc
.
Источники плагинов каждый .lvimrc
он находит в родительском каталоге, с корневой стороны, так что чем глубже .lvimrc
, тем больше приоритет.
EditorConfig https://github.com/editorconfig/editorconfig-vim - отличный вариант, если вы управляете деревом источника, для параметров, которые каждый должен использовать, поскольку он содержит агностические параметры редактора (и реализацию Vim).