Visual Studio, параметры отступа для решения

89

Я работаю над несколькими разными вещами, и некоторые используют вкладки, некоторые используют 2 пробела для отступов, другие пользователи 4 пробела для отступов и т. Д.

Возможность установить это в Visual Studio находится в Инструменты-> Параметры-> Текстовый редактор-> <язык> -> Вкладки.

Есть ли способ переопределить эти настройки для каждого решения?

Fire Lancer
источник
14
Я бы хотел, чтобы он мог определять стиль табуляции / отступа для каждого файла. т.е. когда файл открыт, он будет использовать стиль табуляции / отступа для этого файла. Sublime Text делает это.
IsmailS

Ответы:

20

Вот один (по общему признанию хакерский) способ добиться того, что вы ищете:

1) создать макрос, изменяющий отступ ( исходник )

 Sub Set-Indent(indent As integer)
     Dim props As EnvDTE.Properties = DTE.Properties("TextEditor", "C/C++")
     Dim ts As EnvDTE.Property = props.Item("TabSize")
     Dim ins As EnvDTE.Property = props.Item("IndentSize")
     ts.Value = indent 
     ins.Value = indent 
 End Sub

2) Подключите это к загрузке решения: в обозревателе макросов выберите EnvironmentEvents, выберите SolutionEventsв первом раскрывающемся списке, Openedво втором. Теперь у вас есть макрос, который запускается каждый раз, когда вы открываете решение. Вам просто нужно сопоставить свои решения с требуемым отступом.

Bahbar
источник
8
Взломать, да, но работает. Спасибо. Для разработчиков C # это DTE.Properties ("TextEditor", "CSharp")
Майк Стокдейл,
2
Если вы поместите это в один раствор, вам придется использовать его во всех решениях. Трудно использовать, особенно для общественных проектов. EditorConfig (следующий ответ ниже) лучше IMHO.
rustyx 09
93

ОБНОВЛЕНИЕ: VS 2017 изначально поддерживает EditorConfig: https://blogs.msdn.microsoft.com/dotnet/2016/12/15/code-style-configuration-in-the-vs2017-rc-update/

В VS 2010 и более поздних версиях есть расширение, которое устанавливает отступ на основе файла .editorconfig в корне решения / проекта:

http://visualstudiogallery.msdn.microsoft.com/c8bccfe2-650c-4b42-bc5c-845e21f96328

Также есть аналогичное расширение для Visual Studio Code .

Тереза ​​Томцова
источник
2
Мне это нравится - быстро настраивается, у него нет такой же проблемы с замедлением, как у некоторых других опций, и у него есть дополнительный бонус, заключающийся в том, что вы можете изменить настройки отдельных проектов в решении, если вам нужно к.
karaken12
@ondatra Я не могу заставить его работать, когда помещаю файл в свою папку решения (одновременно с .slnфайлом), только в каждую папку проекта. Кроме того, он поддерживает indent_brace_style?
drzaus 09
@ondatra только что узнал , что не поддерживает indent_brace_styleпока - я открыл вопрос для него.
drzaus 09
Спасибо. обратите внимание, мне пришлось использовать обновление 0.4.0 с github.com/editorconfig/editorconfig/issues/116 для vs2012update3
SteelBytes
1
VS2017 v15.3 теперь поддерживает множество свойств стиля кодирования .
Frédéric
7

Также есть еще одна надстройка под названием «Rebracer» ... ссылка здесь: http://visualstudiogallery.msdn.microsoft.com/410e9b9f-65f3-4495-b68e-15567e543c58

Ричард Б.
источник
Расширение Rebracer работает очень хорошо. Поскольку он интегрируется со встроенными настройками Visual Studio и изменяет их, он достигает цели, не требуя значительных ресурсов.
Alex Essilfie
4

С веб-сайта EditorConfig расширения VS ( http://visualstudiogallery.msdn.microsoft.com/c8bccfe2-650c-4b42-bc5c-845e21f96328 ):

Проект EditorConfig определяет простой формат файла для настройки общих параметров текстового редактора, таких как размеры отступов . Эти файлы конфигурации предназначены для размещения вместе с исходным кодом проекта, что позволяет текстовым редакторам использовать правильные параметры для каждого файла отдельно. Проект EditorConfig предоставляет плагины для многих распространенных текстовых редакторов, что делает формат полностью кроссплатформенным.

(курсив мой)

Полное раскрытие информации: я не смог лично протестировать его (потому что ReSharper берет на себя).

Drzaus
источник
2

В VS2017 RC добавлена ​​поддержка формата .editorconfig.

как м
источник
5
да, но пример готового файла было бы неплохо :)
toddmo 09
0

ОБНОВЛЕНИЕ: похоже, что Resharper не управляет отступами, поэтому этот ответ на самом деле не касается конкретного вопроса. Однако это применимо в общих чертах; т.е. «Visual Studio, в соответствии с настройками решения» на тот случай, если кто-то наткнется здесь на это.


Если вы используете Resharper , вы можете сохранить настройки форматирования (на самом деле, любые настройки) только для решения. Вы можете дополнительно указать, только ли для вас (т.е. не привязаны к исходному контролю) или общие настройки, специфичные для решения (например, зафиксировать исходный контроль).

Resharper > Options > Code Editing > C# (or whatever language) > Formatting Style > Braces Layout

Затем в нижней части окна Save Toвыберите «Решение XYZ личное» (или общее, в зависимости от вашей цели).

Это создает XML-файл YOURSOLUTION.sln.DotSettings.userсо значениями, например:

<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/ANONYMOUS_METHOD_DECLARATION_BRACES/@EntryValue">NEXT_LINE</s:String>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/CASE_BLOCK_BRACES/@EntryValue">NEXT_LINE</s:String>

Настройки Resharper - Сохранить только для решения

Drzaus
источник
1
Какой параметр resharper используется для установки отступа в 2 или 4 пробела?
Энди Тьяджоно
@EndyTjahjono, это настройка VS: Инструменты> Параметры> Текстовый редактор> (Язык)> Вкладки> «Размер вкладки» или «Размер отступа». И что приятно в VS2012, вы можете использовать быстрый поиск ( CTRL+Q) и ввести «Вкладки», чтобы перейти прямо ко всем доступным языковым настройкам.
drzaus
Но этот параметр VS является глобальным (не для решения / проекта), и вы предложили использовать resharper, потому что он имеет настройки для каждого решения / проекта?
Энди Тьяджоно
Вы меня поняли - я занимался изменением некоторых других настроек в resharper, поэтому я предположил, что он также будет управлять отступами. Я просто снова просмотрел в resharper настройки вкладок, но не нашел. Таким образом, предостережение: «практически для любых настроек, кроме тех, с которыми resharper не справляется, таких как размер отступа». Я обновлю ответ, не стесняйтесь голосовать против, так как я не уделял достаточно внимания.
drzaus
Спасибо за обновления. К вашему сведению, я не пытался вас исправить, но на самом деле надеялся, что в resharper есть настройка отступа для каждого проекта, и я просто не нашел места, чтобы ее установить.
Энди Тьяджоно
0

Итак, принятое решение гласит: «Вам просто нужно сопоставить свои решения с требуемым отступом», и это здорово, за исключением того, как вы это делаете? После того, как тратить много времени , пытаясь понять это, я нашел метод , который я предпочитаю здесь . Этот метод загружает любое количество экспортированных настроек, которые могут быть разными для каждого решения. Настройки могут включать что угодно, от отступов до цветов или даже макета окна (я думаю).

  • В Visual Studio 2008 откройте Инструменты> Макросы> Проводник макросов.
  • Дважды щелкните MyMacros> Module1 (если у вас нет Module1, щелкните правой кнопкой мыши MyMacros и выберите «Новый модуль ...», чтобы создать его).
  • В окне обозревателя макросов дважды щелкните «EnvironmentEvents» слева.
  • В верхнем левом раскрывающемся списке выберите «SolutionEvents».
  • В раскрывающемся меню в правом верхнем углу выберите «Открыто».
  • Код для обработки события SolutionEvents.Opened добавляется автоматически. Измените этот код на следующий:

    Private Sub SolutionEvents_Opened() Handles SolutionEvents.Opened
        Dim item As ProjectItem = DTE.Solution.FindProjectItem("solution.vssettings")
        If Not item Is Nothing Then
            'MsgBox("Uncomment this to see a message when settings are loaded")
            Dim name = item.FileNames(1)
            DTE.ExecuteCommand("Tools.ImportandExportSettings", "/import:""" & name & """")
        End If
    End Sub
    
  • Сохраните макрос.

  • Используйте Инструменты> Параметры, чтобы изменить свой пользовательский интерфейс, чтобы иметь настройки вкладок и все, что вы хотите установить.
  • Инструменты> Импорт и экспорт настроек ...> Экспорт выбранных настроек среды> Далее
  • Чтобы просто экспортировать настройки вкладки, снимите флажок «Все настройки», затем выберите «Параметры»> «Текстовый редактор»> «C / C ++».
  • Нажмите «Далее» и введите «solution.vssettings» в качестве «Как вы хотите назвать свой файл настроек?» и сохраните файл там, где у вас есть решение, для которого вы хотите использовать эти настройки.
  • Перетащите solution.vssettings в любое место в окне обозревателя решений.
  • Закройте Visual Studio, и в следующий раз, когда вы откроете решение, содержащее solution.vssettings, оно должно загрузить эти параметры.

Если макрос не запускается, это может быть из-за исправления безопасности MS. Исходя из этого , добавьте следующую строку:

<AllowDComReflection enabled="true"/>

Ниже тега <runtime> в следующих трех файлах:

"C:\Program Files (x86)\Common Files\Microsoft Shared\VSA\9.0\VsaEnv\vsmsvr.exe.config"
"C:\Program Files (x86)\Common Files\Microsoft Shared\VSA\9.0\VsaEnv\vsaenv.exe.config"
"C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe.config"

Обязательно запустите редактор, который вы используете для редактирования этих файлов, с правами администратора (т.е. щелкните правой кнопкой мыши Блокнот и выберите «Запуск от имени администратора»).

Я также нашел плагин, который должен делать то же самое, что и макрос, предложенный выше, но по какой-то причине он ничего не сделал после того, как я запустил его установщик.

Зимняя Драконица
источник
0

clang-format предоставляет довольно сложные варианты форматирования исходного кода.

Плагин Visual Studio довольно примитивен, то есть он не запускается автоматически, но он хорошо выполняет свою работу (то есть при ручном запуске).

http://llvm.org/builds/

Rondom
источник