Visual Studio, 솔루션 별 들여 쓰기 설정


89

나는 몇 가지 다른 일을하고 있으며 일부는 탭을 사용하고 일부는 들여 쓰기에 2 개의 공백을 사용하고 다른 사용자는 들여 쓰기에 4 개의 공백을 사용합니다.

Visual Studio에서이를 설정하는 옵션은 도구-> 옵션-> 텍스트 편집기-> <언어>-> 탭에 있습니다.

솔루션 기반에서 이러한 설정을 재정의하는 방법이 있습니까?


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에서 두 번째 드롭 다운을 선택 합니다. 이제 솔루션을 열 때마다 트리거되는 매크로가 있습니다. 솔루션을 필요한 들여 쓰기에 매핑하기 만하면됩니다.


8
네,하지만 작동합니다. 감사. C #을 개발자들에 대한, 그것의 DTE.Properties ( "문서 편집기", "CSHARP")
— 마이크라고 Stockdale

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 파일을 내 솔루션 폴더 ( .sln파일 과 동시에)에 넣을 때 각 프로젝트 폴더에서만 작동하도록 할 수 없습니다 . 또한 지원 indent_brace_style합니까?
— drzaus 2013

@ondatra 가 indent_brace_style아직 지원하지 않는다는 사실을 발견했습니다 -나는 그것에 대한 문제 를 열었 습니다.
— drzaus

감사합니다. vs2012update3에 대해 github.com/editorconfig/editorconfig/issues/116 에서 0.4.0 업데이트를 사용해야 했습니다
— SteelBytes

1
VS2017 v15.3은 이제 많은 코딩 스타일 속성을 지원 합니다 .
— Frédéric


4

VS 확장 EditorConfig ( http://visualstudiogallery.msdn.microsoft.com/c8bccfe2-650c-4b42-bc5c-845e21f96328 ) 웹 사이트에서 :

EditorConfig 프로젝트는 들여 쓰기 크기와 같은 일반적인 텍스트 편집기 옵션을 구성하기위한 간단한 파일 형식을 정의 합니다 . 이러한 구성 파일은 프로젝트의 소스 코드와 함께 배치되도록 설계되어 텍스트 편집기가 파일별로 올바른 옵션을 사용할 수 있도록합니다. EditorConfig 프로젝트는 여러 일반 텍스트 편집 기용 플러그인을 제공하여 형식을 완전히 교차 플랫폼으로 만듭니다.

(강조 광산)

전체 공개 : ReSharper가 인수했기 때문에 개인적으로 테스트 할 수 없었습니다.


2

VS2017 RC는 .editorconfig 형식에 대한 지원을 추가했습니다.


5
예,하지만 완성 된 파일의 예는 좋을 것입니다. :)
— toddmo


0

업데이트 : Resharper에서 들여 쓰기가 관리되지 않는 것처럼 보이 므로이 답변은 실제로 특정 질문을 해결하지 않습니다. 그러나 일반 용어로 적용됩니다. 즉 "Visual Studio, 솔루션 별 설정" 을 찾는 사람이 여기에서 우연히 발견되는 경우를 대비하여.


Resharper 를 사용 하는 경우 솔루션에 대해서만 서식 설정 (실제로 모든 설정)을 저장할 수 있습니다. 자신만을위한 것인지 (즉, 소스 제어에 전념하지 않음) 또는 공유 솔루션 별 설정 (즉, 소스 제어에 전념)을 추가로 지정할 수 있습니다.

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

그런 다음 창 하단의 Save To"Solution XYZ personal"(또는 목적에 따라 공유)을 선택합니다.

다음 YOURSOLUTION.sln.DotSettings.user과 같은 값을 가진 xml 파일이 생성 됩니다.

<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 칸으로 설정하는 데 사용되는 resharper 설정은 무엇입니까?
— 앤디 Tjahjono

VS 설정 인 @EndyTjahjono : 도구> 옵션> 텍스트 편집기> (언어)> 탭> "탭 크기"또는 "들여 쓰기 크기". VS2012의 좋은 점은 빠른 실행 검색 ( CTRL+Q)을 사용하고 "Tabs"를 입력하여 사용 가능한 모든 언어 설정으로 바로 이동할 수 있다는 것입니다.
— drzaus

하지만 그 VS 설정은 글로벌 (솔루션 / 프로젝트 별이 아님)이며 솔루션 / 프로젝트 별 설정이 있기 때문에 resharper를 사용하도록 제안 했습니까?
— 앤디 Tjahjono

당신은 저를 얻었습니다. 저는 resharper에서 다른 설정을 변경하는 중이었기 때문에 들여 쓰기도 관리 할 것이라고 생각했습니다. 탭 설정을 위해 resharper를 다시 살펴 봤지만 찾을 수 없었습니다. 따라서주의 할 점은 "들여 쓰기 크기와 같이 resharper가 관리하지 않는 설정을 제외한 거의 모든 설정"입니다. 나는 대답을 업데이트 할 것이다. 충분한주의를 기울이지 않았기 때문에 자유롭게 반대표를 던질 것이다.
— drzaus

업데이트 해주셔서 감사합니다. 참고로 나는 당신을 고치려고하지 않았지만 실제로 resharper가 프로젝트마다 들여 쓰기 설정을 갖기를 바라고 있었고 그것을 설정할 장소를 찾지 못했습니다.
— 앤디 Tjahjono

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
    
  • 매크로를 저장하십시오.

  • 도구> 옵션을 사용하여 UI를 변경하여 탭 설정 및 기타 원하는 항목을 설정할 수 있습니다.
  • 도구> 설정 가져 오기 및 내보내기 ...> 선택한 환경 설정 내보내기> 다음
  • 탭 설정을 내보내려면 '모든 설정'을 선택 취소 한 다음 옵션> 텍스트 편집기> 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/

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.