Visual Studio, відповідно до налаштувань відступу рішення


89

Я працюю над кількома різними речами, а деякі використовують вкладки, деякі використовують 2 пробіли для відступів, інші користувачі 4 пробіли для відступів тощо.

Опція встановити це у Visual Studio є в Інструменти-> Параметри-> Текстовий редактор-> <мова> -> Вкладки

Чи є спосіб замінити ці налаштування на основі кожного рішення?


14
Я хотів би, щоб він міг виявити стиль вкладки / відступу для кожного файлу. тобто коли файл відкрито, він використовуватиме стиль вкладки / відступу для цього файлу. Піднесений текст це робить.
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у другому. Тепер у вас є макрос, який запускатиметься кожного разу, коли ви відкриваєте рішення. Вам просто потрібно зіставити ваші рішення з необхідними відступами.


8
Так, так, але це працює. Дякую. Для розробників C # це DTE.Properties ("TextEditor", "CSharp")
Майк Стокдейл,

2
Якщо ви покладете це в одне рішення, вам доведеться помістити його у всі рішення. Навряд чи можна використовувати, особливо для державних проектів. EditorConfig (наступна відповідь нижче) краще IMHO.
rustyx

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 Я не можу змусити його працювати, коли я поміщаю файл у свою папку Solution (одночасно з .slnфайлом), лише у кожну папку проекту. Крім того, чи підтримує це indent_brace_style?
drzaus

@ondatra тільки що дізнався , що не підтримує indent_brace_styleпоки - я відкрив питання для нього.
drzaus

Дякую. Зверніть увагу, мені довелося скористатися оновленням 0.4.0 з github.com/editorconfig/editorconfig/issues/116 для vs2012update3
SteelBytes

1
VS2017 v15.3 тепер підтримує багато властивостей стилю кодування .
Фредерік

7

Зараз також є ще одна надбудова під назвою "Rebracer" ... посилання тут: http://visualstudiogallery.msdn.microsoft.com/410e9b9f-65f3-4495-b68e-15567e543c58


Розширення Rebracer працює дуже добре. Оскільки він інтегрується та модифікує вбудовані налаштування Visual Studio, він досягає мети, не витрачаючи ресурсів.
Алекс Ессілфі,

4

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

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

(курсив мій)

Повне розкриття інформації: Я не зміг особисто протестувати це (оскільки ReSharper бере на себе відповідальність).


2

VS2017 RC додав підтримку формату .editorconfig.


5
так, але приклад готового файлу був би непоганий :)
toddmo


0

UPDATE: здається, що відступом не керує 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 - Зберегти лише для рішення


1
Яке налаштування перефарбування використовується для встановлення відступу до 2 пробілів або 4 пробілів?
Endy Tjahjono

@EndyTjahjono, це налаштування VS: Інструменти> Параметри> Текстовий редактор> (Мова)> Вкладки> "Розмір вкладки" або "Розмір відступу". І найприємніше у VS2012 полягає в тому, що ви можете скористатися пошуком швидкого запуску ( CTRL+Q) і набрати "Вкладки", щоб перейти прямо до всіх доступних налаштувань мови.
drzaus

Але це налаштування VS є загальним (не для рішення / проекту), і ви запропонували використовувати resharper, оскільки він має налаштування для рішення / проекту?
Endy Tjahjono

Ви мене зрозуміли - я був посеред зміни деяких інших налаштувань у resharper, тому я припускав, що це також буде керувати відступами. Я просто ще раз переглянув resharper для налаштувань вкладок, але не зміг його знайти. Тож застереження стосується "майже будь-яких параметрів, крім тих, які не вдається виконати перефарбуванню, наприклад, розмір відступу". Я оновлю відповідь, сміливо голосуйте проти, оскільки я не приділяв достатньо уваги.
drzaus

Дякуємо за оновлення. FYI Я не намагався вас виправити, але насправді сподівався, що resharper має параметри відступу проекту, і я просто не знайшов місця, де його можна встановити.
Endy Tjahjono

0

Отже, прийняте рішення говорить "Вам просто потрібно зіставити свої рішення з необхідними відступами", що чудово, крім як це зробити? Після того, як витрачати багато часу , намагаючись зрозуміти це, я знайшов метод , який я вважаю за краще тут . Цей метод завантажує будь-яку кількість експортованих параметрів, яка може бути різною для кожного рішення. Налаштування можуть включати що завгодно, від відступів до кольорів або навіть розташування вікон (я думаю).

  • У Visual Studio 2008 відкрийте Інструменти> Макроси> Провідник макросів
  • Двічі клацніть MyMacros> Module1 (якщо у вас немає Module1, клацніть правою кнопкою миші MyMacros і виберіть 'New module ...', щоб створити його).
  • У вікні провідника макросів двічі клацніть «EnvironmentEvents» зліва.
  • У спадному меню ліворуч угорі виберіть „SolutionEvents“.
  • У правому верхньому меню виберіть "Відкрито".
  • Код для обробки SolutionEvents. Відкрита подія додається автоматично. Змініть цей код на такий:

    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 у будь-яке місце у вікні Solution Explorer.
  • Закрийте 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/

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.