Visual Studio, ustawienia wcięcia na rozwiązanie


89

Pracuję nad kilkoma różnymi rzeczami i niektórzy używają kart, niektórzy używają 2 spacji na wcięcia, inni użytkownicy 4 spacje na wcięcia itp.

Opcja ustawienia tego w programie Visual Studio znajduje się w Tools-> Options-> Text Editor-> <language> -> Tabs

Czy istnieje sposób na zastąpienie tych ustawień w ramach poszczególnych rozwiązań?


14
Chciałbym, żeby potrafił wykryć styl tabulacji / wcięcia na podstawie pliku. tzn. kiedy plik zostanie otwarty, użyje stylu tabulacji / wcięcia dla tego pliku. Sublime Text to robi.
IsmailS

Odpowiedzi:


20

Oto jeden (wprawdzie zepsuty) sposób na osiągnięcie tego, czego szukasz:

1) utwórz makro zmieniające wcięcie ( źródło )

 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) Połącz to z ładowaniem rozwiązania: w eksploratorze makr wybierz EnvironmentEvents, wybierz SolutionEventsw pierwszym menu rozwijanym, Openedw drugim. Masz teraz makro, które będzie wyzwalane za każdym razem, gdy otworzysz rozwiązanie. Wystarczy zmapować swoje rozwiązania do wymaganego wcięcia.


8
Hack, tak, ale to działa. Dzięki. Dla programistów C # jest to DTE.Properties ("TextEditor", "CSharp")
Mike Stockdale

2
Jeśli umieścisz to w jednym rozwiązaniu, będziesz musiał umieścić to we wszystkich rozwiązaniach. Mało nadające się do użytku, zwłaszcza w przypadku projektów publicznych. EditorConfig (następna odpowiedź poniżej) to lepsze IMHO.
rustyx

93

AKTUALIZACJA: VS 2017 obsługuje EditorConfig natywnie: https://blogs.msdn.microsoft.com/dotnet/2016/12/15/code-style-configuration-in-the-vs2017-rc-update/

W VS 2010 i nowszych istnieje rozszerzenie, które ustawia wcięcia na podstawie pliku .editorconfig w katalogu głównym rozwiązania / projektu:

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

Istnieje również podobne rozszerzenie dla Visual Studio Code .


2
Podoba mi się to - szybka w konfiguracji, nie ma tego samego problemu ze spowolnieniem, jak niektóre inne opcje, i ma dodatkową zaletę, że możesz zmienić ustawienia w poszczególnych projektach w rozwiązaniu, jeśli potrzebujesz do.
karaken

@ondatra Nie mogę zmusić go do pracy, gdy umieszczam plik w folderze mojego rozwiązania (jednocześnie z .slnplikiem), tylko w każdym folderze projektu. Czy to obsługuje indent_brace_style?
drzaus

@ondatra tylko dowiedziałem się, że nie obsługuje indent_brace_stylejeszcze - mam otwarty problem dla niego.
drzaus

Dziękuję Ci. uwaga, musiałem użyć aktualizacji 0.4.0 z github.com/editorconfig/editorconfig/issues/116 dla vs2012update3
SteelBytes

1
VS2017 15.3 obsługuje teraz wiele właściwości stylu kodowania .
Frédéric


4

Z witryny internetowej EditorConfig rozszerzenia VS ( http://visualstudiogallery.msdn.microsoft.com/c8bccfe2-650c-4b42-bc5c-845e21f96328 ):

Projekt EditorConfig definiuje prosty format pliku do konfigurowania typowych opcji edytora tekstu, takich jak rozmiary wcięć . Te pliki konfiguracyjne są przeznaczone do umieszczania obok kodu źródłowego projektu, umożliwiając edytorom tekstu używanie odpowiednich opcji dla każdego pliku. Projekt EditorConfig zapewnia wtyczki do wielu popularnych edytorów tekstu, dzięki czemu format jest w pełni wieloplatformowy.

(podkreślenie moje)

Pełne ujawnienie: nie mogłem go osobiście przetestować (ponieważ ReSharper przejmuje kontrolę).


2

W VS2017 RC dodano obsługę formatu .editorconfig.


5
tak, ale przykład gotowego pliku byłby fajny :)
toddmo


0

AKTUALIZACJA: wygląda na to, że Resharper nie zarządza wcięciami, więc ta odpowiedź w rzeczywistości nie dotyczy konkretnego pytania. Jednak ma to zastosowanie ogólnie; tj. „Visual Studio, ustawienia rozwiązania” na wypadek, gdyby ktoś się tutaj potknął, szukając tego.


Jeśli używasz Resharper , możesz zapisać ustawienia formatowania (naprawdę dowolne ustawienia) tylko dla rozwiązania. Możesz dokładniej określić, czy tylko dla Ciebie (tj. Nie zobowiązałeś się do kontroli źródła), czy ustawienia specyficzne dla wspólnego rozwiązania (tj. Zdecyduj się na kontrolę źródła).

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

Następnie w dolnej części okna pod Save Towybierz „Rozwiązanie XYZ osobiste” (lub wspólne, w zależności od celu).

Spowoduje to utworzenie pliku xml YOURSOLUTION.sln.DotSettings.userz wartościami takimi jak:

<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 Settings - Save for Solution


1
Które ustawienie resharper służy do ustawiania wcięcia na 2 spacje lub 4 spacje?
Endy Tjahjono

@EndyTjahjono to ustawienie VS: Narzędzia> Opcje> Edytor tekstu> (Język)> Karty> „Rozmiar tabulatora” lub „Rozmiar wcięcia”. Zaletą VS2012 jest to, że możesz skorzystać z funkcji szybkiego uruchamiania wyszukiwania ( CTRL+Q) i wpisać „Tabs”, aby przejść od razu do wszystkich dostępnych ustawień językowych.
drzaus

Ale to ustawienie VS jest globalne (nie dla rozwiązania / projektu) i zasugerowałeś użycie resharper, ponieważ ma ustawienia dla rozwiązania / projektu?
Endy Tjahjono

Masz mnie - byłem w trakcie zmiany innych ustawień w resharper, więc założyłem, że poradzi sobie również z wcięciem. Po prostu ponownie przejrzałem resharpera w poszukiwaniu ustawień karty, ale nie mogłem go znaleźć. Tak więc zastrzeżenie dotyczy „praktycznie każdego ustawienia, z wyjątkiem tych, których resharper nie obsługuje, takich jak rozmiar wcięcia”. Zaktualizuję odpowiedź, nie krępuj się, ponieważ nie zwracałem wystarczającej uwagi.
drzaus

Dziękuję za aktualizację. FYI Nie próbowałem cię poprawiać, ale tak naprawdę miałem nadzieję, że resharper ma ustawienie wcięcia dla projektu i po prostu nie znalazłem miejsca, aby to ustawić.
Endy Tjahjono

0

Tak więc przyjęte rozwiązanie mówi: „Musisz tylko zmapować swoje rozwiązania do wymaganego wcięcia”, co jest świetne, z wyjątkiem tego, jak to zrobić? Po tracić dużo czasu staramy się zorientować, że obecnie, znalazłem sposób wolę tutaj . Ta metoda ładuje dowolną liczbę wyeksportowanych ustawień, które mogą być różne dla każdego rozwiązania. Ustawienia mogą obejmować wszystko, od wcięć po kolory, a nawet układ okien (tak mi się wydaje).

  • W programie Visual Studio 2008 otwórz narzędzia> makra> eksplorator makr
  • Kliknij dwukrotnie MyMacros> Module1 (jeśli nie masz Module1, kliknij prawym przyciskiem myszy MyMacros i wybierz „New module ...”, aby go utworzyć).
  • W oknie eksploratora makr kliknij dwukrotnie „EnvironmentEvents” po lewej stronie.
  • W menu rozwijanym w lewym górnym rogu wybierz opcję „Zdarzenia rozwiązania”.
  • W menu w prawym górnym rogu wybierz „Otwarte”.
  • Kod do obsługi zdarzenia SolutionEvents.Opened jest dodawany automatycznie. Zmień ten kod na następujący:

    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
    
  • Zapisz makro.

  • Użyj Narzędzia> Opcje, aby zmienić interfejs użytkownika, aby mieć ustawienia karty i cokolwiek innego, co chcesz ustawić.
  • Narzędzia> Ustawienia importu i eksportu ...> Eksportuj wybrane ustawienia środowiska> Dalej
  • Aby po prostu wyeksportować ustawienia kart, odznacz „Wszystkie ustawienia”, a następnie zaznacz Opcje> Edytor tekstu> C / C ++
  • Kliknij przycisk Dalej, a następnie wpisz „solution.vssettings” jako „Jak chcesz nazwać plik ustawień?” i zapisz plik w dowolnym miejscu, w którym masz rozwiązanie, którego chcesz użyć z tych ustawień.
  • Przeciągnij solution.vssettings do dowolnej lokalizacji w oknie Eksplorator rozwiązań.
  • Zamknij program Visual Studio i następnym razem, gdy otworzysz rozwiązanie zawierające solution.vssettings, powinno załadować te ustawienia.

Jeśli makro nie działa, może to być spowodowane poprawką zabezpieczeń MS. Na tej podstawie dodaj następujący ciąg:

<AllowDComReflection enabled="true"/>

Pod tagiem <runtime> w następujących trzech plikach:

"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"

Pamiętaj, aby uruchomić edytor, którego używasz do edycji tych plików z uprawnieniami administratora (tj. Kliknij prawym przyciskiem Notatnik i wybierz „Uruchom jako administrator”).

Znalazłem również wtyczkę, która ma robić to samo, co sugerowane powyżej makro, ale z jakiegoś powodu nic nie zrobiła po uruchomieniu jej instalatora.


0

clang-format zapewnia dość zaawansowane opcje formatowania kodu źródłowego.

Wtyczka Visual Studio jest dość prymitywna, tj. Nie działa automatycznie, ale dobrze wykonuje swoje zadanie (to znaczy po ręcznym wywołaniu).

http://llvm.org/builds/

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.