Я работаю в нескольких группах, каждая из которых имеет свои стандарты табуляции / отступов / интервалов в C.
Есть ли способ иметь отдельные выбираемые конфигурации VIM для каждой, поэтому, когда я редактирую файл, либо:
- Я что то хотел
set group=1
выбрать конфигурацию - локальный .vimrc, который находится в рабочем каталоге, используется для автоматической установки конфигурации
Ответы:
В итоге
Есть несколько способов сделать это, большинство из которых было предложено, но я подумал, что резюмирую их двумя дополнительными:
~/project1
и вы уже используете~/project1/.vim.custom
егоcd ~ ; vim project1/file.c
, пользовательские настройки не будут найдены.Поиск заголовка
Во многих организациях в верхней части каждого исходного файла есть стандартный заголовок (с уведомлением об авторских правах, названием проекта и т. Д.). Если это так, вы можете заставить Vim автоматически сканировать первые (например) 10 строк файла в поисках ключевого слова. Если он его найдет, он может изменить ваши настройки. Я изменил это, чтобы сделать его проще, чем форма, которую я использую (которая выполняет множество других функций), но создайте
~/.vim/after/filetype.vim
(если у вас ее еще нет) и добавьте что-то вроде этого:Функция вызывается всякий раз, когда открывается файл любого типа и устанавливается тип файла (
au FileType *
строка)ConfigureFiletypes
. Это проверяет, находится ли тип файла в списке типов файлов, связанных с текущей группой (GROUPNAME), в данном случае 'c', 'cpp', 'vhdl' или 'c.doxygen'. Если это так, он вызывает CheckForGROUPNAMECode (), который читает первые 10 строк файла и, если они содержат GROUPNAME, выполняет некоторые настройки. Помимо настройки expandtabs или чего-то еще, это также изменяет строку состояния, чтобы четко отображать имя группы, чтобы вы знали, что она работает с первого взгляда.Проверка конфигурации при открытии
Как и предложение JS Bangs, может быть полезно иметь собственный файл конфигурации. Однако вместо загрузки его в vimrc рассмотрите что-то вроде этого, которое будет проверять, когда файл .c открывается для .vim.custom в том же каталоге, что и файл .c.
источник
У меня это в
$HOME/.vimrc
:Это позволяет мне помещать
.vim.custom
файл в каждый каталог для загрузки команд и параметров, специфичных для этого каталога. Если вы работаете над несколькими проектами с глубокой структурой каталогов, вам может понадобиться что-то более сложное (например, пройтись по дереву каталогов, пока не.vim.custom
будет найден), но та же основная идея будет работать.ОБНОВИТЬ:
Теперь я делаю что-то подобное, чтобы прочитать
.vim
файл из того же каталога, что и файл, который я редактирую, независимо от текущего каталога.источник
'exrc'
Вариант уже позволяет делать что - то очень похожее на это. Он загрузит.vimrc
/.exrc
/.gvimrc
в текущий рабочий каталог.exrc
должен быть правильным ответом. Все остальное кажется хакерским и сложным.exrc
- это хорошо, но я ценю получение правильного файла, даже если я не нахожусь в том же рабочем каталоге, что и файл, который редактирую.Вы также можете поместить в свой файл автокоманды,
.vimrc
которые устанавливают определенные параметры для каждого пути.источник
Плагин делает правильные вещи: http://www.vim.org/scripts/script.php?script_id=441
«Этот плагин ищет локальные файлы vimrc в дереве файловой системы текущего открытого файла. По умолчанию он ищет все файлы «.lvimrc» от каталога файла до корневого каталога и загружает их в обратном порядке. Имя файла и количество загружаемых файлов можно настроить с помощью глобальных переменных ».
источник
Если ваши коллеги-разработчики не будут жаловаться на это, вы всегда можете добавить настройки vim к каждому файлу в комментариях.
источник
Я создал инструмент с открытым исходным кодом именно для этой цели. Забудьте о заголовках, сканировании, конфигурациях и локальных файлах vimrc.
Попробуй плавать.
Плавать
swim
это быстрый инструмент для переключения файлов vimrc и создания удобных псевдонимов. Вот краткий список использования. См. Репозиторий Github для ознакомления с гифкой и инструкциями по загрузке:Применение
Прочитайте больше
https://github.com/dawsonbotsford/swim
источник
После того, как я опробовал плагин localvimrc, предложенный на предыдущем постере, мне очень понравилось, что над настройками vim не зависит от проекта.
По умолчанию он запрашивает подтверждение перед загрузкой файла .lvimrc, но есть параметр для автоматической загрузки файлов .lvimrc. Некоторые могут рассматривать это как дыру в безопасности, но это работает так, как рекламируется.
Я решил игнорировать файлы .lvimrc. В качестве альтернативы вы можете зарегистрировать их как форму общих настроек (расширение табуляции / пробела, табуляторы, другие настройки для конкретного проекта).
источник
.lvimrc
файл.gitignore
? Дело в том, что у всех, кто использует vim и установлен плагин, одинаковые настройки.Как уже упоминал sledge, использование этого плагина - лучший вариант, который я когда-либо видел и использовал. jerseyboy прокомментировал, что утилита рекомендует запрашивать подтверждение перед загрузкой (то есть после открытия каждого файла). Чтобы этого не
.vimrc
произошло, просто установите на своей главной странице список локальных.lvimrc
файлов:let g:localvimrc_whitelist='/development/kernel/.lvimrc'
источник
Вот вариант Джемессана
Я часто запускаю vi без определенного файла, к которому я перехожу, поэтому это позволяет загружать конфигурацию условно на основе текущего рабочего каталога. Обратной стороной является то, что конфигурация применяется не к файлу, а к рабочему каталогу.
источник
~/.vimrc
, изменил его/src/mobile
в каталог проектов Symfony (в моем случае это было/www/symfony
) и изменил,.vim.mobile
чтобы.vim.symfony
затем поместить новую конфигурацию .vimrc внутри~/.vim.symfony
файлаЯ работаю со всеми видами открытого кода одновременно. Создавать отдельные
.vimrc
файлы и изменять стандарты форматирования непрактично . Более десяти лет назад мне, наконец, надоело иметь дело с конфигурацией редактора, и я написал программу, призваннуюautotab
ее обрабатывать.Когда
autotab
он настроен с предложенным Vim, каждый раз, когда вы загружаете файл в Vim,autotab
он вызывается, и выходныеautotab
данные настроек Vim передаются:set
команде.autotab
читает несколько тысяч строк из файла, анализирует их и определяет настройки для параметровexpandtab
,tabstop
иshiftwidth
.Он определяет, используются ли в файле жесткие табуляции или просто пробелы для отступов, и определяет размер отступа. Если файл имеет отступ с вкладками, он определяет правильный размер вкладки на основе рендеринга образца файла с использованием вкладок различных размеров и оценки его в соответствии с эвристикой, например, выравнивание внутренних элементов между строками.
Он работает достаточно хорошо, поэтому я перестал настраивать алгоритм несколько лет назад. Если он запутался, это почти всегда связано с проблемами форматирования файла, такими как одновременное использование нескольких соглашений.
Он также «не зависит от типа файла» и хорошо работает с множеством разных языков. Я использую его не только поверх C, но и сценариев оболочки, Lisp, Makefiles, HTML и прочего.
Обратите внимание, что он не обрабатывает другие параметры форматирования, которые могут быть специфичными для проекта, как, например, в файлах C, независимо от того, имеют ли
case
метки вswitch
операторе отступ или нет, или списки аргументов обернутых функций просто с отступом или выровнены по открывающая скобка в списке аргументов. В Vim есть настройки для такого рода вещей, и поэтому программа может быть расширена для анализа стиля и вывода этих параметров.источник
В поисках той же проблемы я также нашел плагин Sauce: http://www.vim.org/scripts/script.php?script_id=3992
Он утверждает:
Мне особенно интересно то, что он сохраняет всю конфигурацию в своем каталоге данных вместо того, чтобы ожидать, что пользователь разбросает точечные файлы по файловой системе. Хотя зачастую это скорее показатель личного вкуса.
Однако мне еще предстоит это проверить.
источник
Вы можете использовать stow для переключения конфигурации (не только любые точечные файлы
.vimrc
)Установить
stow
:Создайте несколько каталогов для каждой конфигурации:
Поместите
.vimrc
в них разные :Теперь вы можете мгновенно активировать конфигурацию vim-golang с помощью этой команды (она должна запускаться внутри каталога dotfiles):
Теперь это связано:
Если вам нужно переключить конфиг, просто переустановите
stow
его:Подробнее об этом здесь: Управление точечными файлами с помощью GNU stow
Плюсы : довольно просто, нет зависимостей плагинов vim, можно использовать для управления всеми точечными файлами, не только
.vimrc
.Минусы : конфигурации не зависят друг от друга, вам нужно управлять / обновлять каждый из них отдельно (если вы не переключаете / обновляете свои конфигурации слишком часто - это не будет проблемой).
источник