EditorConfig를 사용하여 휴대용, 사용자 지정 편집기 설정 만들기Create portable, custom editor settings with EditorConfig

Visual Studio의 텍스트 편집기 설정은 지정된 형식의 모든 프로젝트에 적용됩니다.Text editor settings in Visual Studio apply to all projects of a given type. 따라서 예를 들어 C# 텍스트 편집기 설정을 변경하는 경우 해당 설정이 Visual Studio의 모든 C# 프로젝트에 적용됩니다.So, for example, if you change a C# text editor setting, that setting applies to all C# projects in Visual Studio. 그러나 고유한 개인 편집기 기본 설정과 다른 규칙을 사용해야 하는 경우도 있습니다.However, in some cases, you may need to use conventions that differ from your own personal editor preferences. 이 경우 EditorConfig 파일을 사용하여 프로젝트 단위로 공통 텍스트 편집기 옵션을 제공하면 됩니다.EditorConfig files enable you to do this by providing common text editor options on a per-project basis. 코드베이스에 추가되는 .editorconfig 파일에 포함된 EditorConfig 설정이 전역 Visual Studio 텍스트 편집기 설정보다 우선합니다.EditorConfig settings, which are contained in an .editorconfig file added to your codebase, supersede global Visual Studio text editor settings. 따라서 원하는 텍스트 편집기 설정을 사용하도록 각 코드베이스를 조정할 수 있습니다.This means that you can tailor each codebase to use the text editor settings you prefer. Visual Studio에서 이 기능을 사용하기 위해 플러그 인이 필요하지는 않습니다.No plug-in is required to use this functionality in Visual Studio.

코딩 일관성Coding consistency

EditorConfig 파일의 설정을 사용하면 사용 중인 IDE 편집기에 관계없이 코드베이스에서 들여쓰기 스타일, 탭 너비, 줄의 끝 문자, 인코딩 등 언어의 코딩 스타일 및 설정을 일관성 있게 유지할 수 있습니다.Settings in EditorConfig files enable you to maintain consistent coding styles and settings for a language, such as indent style, tab width, end of line characters, encoding, and more, in a codebase regardless of the editor or IDE you use. 예를 들어 C#으로 코딩하는 경우 코드베이스에 들여쓰기가 항상 공백 문자 5개로 구성되고, 문서에서 UTF-8 인코딩을 사용하고, 각 줄이 항상 CR/LF로 끝나도록 하는 규칙이 있다면 .editorconfig 파일을 해당 규칙에 따라 구성할 수 있습니다.For example, when coding in C#, if your codebase has a convention to prefer that indents always consist of five space characters, documents use UTF-8 encoding, and each line always ends with a CR/LF, you can configure an .editorconfig file to do that.

개인 프로젝트에서 사용하는 코딩 규칙과 팀 프로젝트에서 사용되는 규칙이 서로 다를 수 있습니다.Coding conventions you use on your personal projects may differ from those used on your team's projects. 예를 들어 사용자는 코딩 시 Tab 키를 누를 때 탭 문자가 추가되는 것을 선호합니다.For example, you might prefer that when you're coding, pressing the Tab key adds a TAB character. 그러나 팀은 들여쓰기 시 탭 문자 대신 공백 문자 4개가 추가되는 것을 선호할 수 있습니다.However, your team might prefer that indenting adds four space characters instead of a TAB character. EditorConfig 파일을 통해 각 시나리오에 맞게 구성하면 이 문제를 해결할 수 있습니다.EditorConfig files resolve this problem by enabling you to have a configuration for each scenario.

설정은 코드베이스의 파일에 포함되므로 해당 코드베이스와 함께 전송됩니다.Because the settings are contained in a file in the codebase, they travel along with that codebase. EditorConfig 규격 편집기에서 코드 파일을 열기만 하면 텍스트 편집기 설정이 구현됩니다.As long as you open the code file in an EditorConfig-compliant editor, the text editor settings are implemented. EditorConfig 파일에 대한 자세한 내용은 EditorConfig.org 웹 사이트를 참조하세요.For more information about EditorConfig files, see the EditorConfig.org website.

EditorConfig 설정 재정의Override EditorConfig settings

파일 계층 구조의 폴더에 .editorconfig 파일을 추가하는 경우 해당 설정이 이 수준과 그 아래에 있는 모든 파일에 적용됩니다.When you add a .editorconfig file to a folder in your file hierarchy, its settings apply to all applicable files at that level and below. 최상위 .editorconfig 파일과 다른 교칙을 사용하는 특정 프로젝트 또는 코드베이스에 대해 EditorConfig 설정을 재정의하려면 .editorconfig 파일을 코드베이스의 리포지토리 또는 프로젝트 디렉터리의 루트에 추가하면 됩니다.To override EditorConfig settings for a particular project or codebase such that it uses different conventions than the top-level .editorconfig file, just add a .editorconfig file to the root of your codebase's repo or project directory. Visual Studio가 디렉터리 구조에서 .editorconfig 파일을 더 찾지 않도록 파일에 root=true 속성을 넣으세요.Make sure to put the root=true property in the file so Visual Studio doesn't look for any .editorconfig files further up the directory structure. 새 .editorconfig 파일 설정은 모든 하위 디렉터리에 파일이 있는 수준에 적용됩니다.The new .editorconfig file settings will apply to the level in which it is located and files in any subdirectories.

# top-most EditorConfig file
root = true

EditorConfig 계층 구조

EditorConfig 파일은 위쪽에서 아래쪽으로 읽으며 가장 가까운 EditorConfig 파일을 마지막으로 읽습니다.EditorConfig files are read top to bottom, and the closest EditorConfig files are read last. 일치하는 EditorConfig 섹션의 규칙이 읽는 순서로 적용되므로, 가까운 파일의 규칙이 우선 적용됩니다.Conventions from matching EditorConfig sections are applied in the order they were read, so conventions in closer files take precedence.

지원되는 설정Supported settings

Visual Studio의 편집기는 EditorConfig properties의 핵심 집합에서 다음 값을 지원합니다.The editor in Visual Studio supports the following from the core set of EditorConfig properties:

  • indent_styleindent_style
  • indent_sizeindent_size
  • tab_widthtab_width
  • end_of_lineend_of_line
  • 문자 집합charset
  • 루트root

또한 .NET 코드 스타일 규칙을 지원합니다.In addition, it supports the .NET code style conventions.

EditorConfig 설정은 XML을 제외하고 Visual Studio가 지원하는 모든 언어에서 지원됩니다.EditorConfig settings are supported in all Visual Studio-supported languages except for XML.

IntelliSenseIntelliSense

Visual Studio는 .editorconfig 파일을 편집할 수 있는 제한된 IntelliSense를 제공하빈다.Visual Studio provides limited IntelliSense for editing .editorconfig files. 많은 .editorconfig 파일을 편집하는 경우 EditorConfig Language Service 확장이 유용할 수 있습니다.If you edit a lot of .editorconfig files, you may find the EditorConfig Language Service extension helpful.

예제Example

다음은 .editorconfig 파일을 프로젝트에 추가하기 전과 이후 C# 코드 조각의 들여쓰기 상태를 보여 주는 예제입니다.Here is an example that shows the indent state of a C# code snippet before and after adding a .editorconfig file to the project. Visual Studio 텍스트 편집기에 대한 옵션 대화 상자의 설정은 코드에서 Tab 키를 누를 때 공백 문자를 생성하도록 설정되었습니다.The Tabs setting in the Options dialog box for the Visual Studio text editor is set to produce space characters when you press the Tab key in your code.

텍스트 편집기 탭 설정

예상대로 다음 줄에서 Tab 키를 누르면 공백 문자 4개가 추가되어 줄이 들여쓰기됩니다.As expected, pressing the Tab key on the next line indents the line by adding four additional white space characters.

EditorConfig를 사용하기 전의 코드

.editorconfig라는 새 파일을 다음 콘텐츠를 포함하여 프로젝트에 추가합니다.We'll add a new file called .editorconfig to the project, with the following contents. [*.cs] 설정은 이 변경 내용이 이 프로젝트의 .cs 파일에만 적용됨을 의미합니다.The [*.cs] setting means that this change will apply only to .cs files in this project.

.editorconfig 파일이 프로젝트에 추가됨

이제 Tab 키를 누르면 공백 대신 탭 문자가 추가됩니다.Now, when you press the Tab key, you get tab characters instead of spaces.

Tab 키를 누르면 탭 문자가 추가됨

참고

프로젝트 또는 코드베이스에 .editorconfig 파일을 추가해도 기존 스타일이 새 스타일로 변환되지는 않습니다. 새로 추가한 줄에만 적용됩니다.Adding a .editorconfig file to your project or codebase will not convert the existing styles to the new ones, it will only apply to newly-added lines. 프로젝트 또는 코드베이스에서 .editorconfig 파일을 제거하는 경우 편집기 설정에 대한 코드 파일을 다시 로드하여 전역 설정으로 되돌려야 합니다.If you remove a .editorconfig file from your project or codebase, you must reload the code file(s) for the editor settings to revert back to global settings. .editorconfig 파일에 오류가 있으면 Visual studio의 오류 목록 창에 모두 보고됩니다.Any errors in .editorconfig files are reported in the Error List window in Visual studio.

EditorConfig 설정 문제 해결Troubleshooting EditorConfig settings

프로젝트 위에 또는 그 이상에 있는 디렉터리 구조의 어디엔가 EditorConfig 파일이 있다면 Visual Studio는 해당 파일의 편집기 설정을 사용자의 편집기에 적용합니다.If there is an EditorConfig file anywhere in the directory structure at or above your project's location, Visual Studio will apply the editor settings in that file to your editor. 이 경우에는 상태 표시줄에서 다음 메시지가 보일 수 있습니다.In this case, you may see the following message in the status bar:

"이 파일 형식에 대한 사용자 기본 설정이 이 프로젝트의 코딩 규칙으로 재정의됩니다.""User preferences for this file type are overridden by this project's coding conventions."

즉, 도구, 옵션, 텍스트 편집기의 편집기 설정(예: 들여쓰기 크기, 탭 크기, 들여쓰기 스타일 — 탭 또는 공백, 또는 var 사용 등의 코딩 규칙)이 디렉터리 구조에서 프로젝트 또는 위의 EditorConfig 파일에 지정되어 있는 경우 EditorConfig 파일의 규칙은 옵션의 설정을 재정의합니다.This means that if any editor settings in Tools, Options, Text Editor (such as indent size, tab size, indent style — tabs or spaces, or coding conventions such as the use of var) are specified in an EditorConfig file at or above the project in the directory structure, the conventions in the EditorConfig file will override the settings in Options. 도구, 옵션, 텍스트 편집기에서 프로젝트 코딩 규칙 따름 옵션을 전환하여 이 동작을 제어할 수 있습니다.You can control this behavior by toggling the Follow project coding conventions option in Tools, Options, Text Editor. 옵션을 선택 취소하면 Visual Studio에 대한 EditorConfig 지원이 해제됩니다.Unchecking the option will turn off EditorConfig support for Visual Studio.

도구 옵션 - 프로젝트 코딩 규칙 따름

명령 프롬프트를 열고 사용자의 프로젝트가 포함된 디스크의 루트에서 다음 명령을 실행하여 부모 디렉터리에서 .editorconfig 파일을 찾을 수 있습니다.You can find .editorconfig files in parent directories by opening a command prompt and running the following command from the root of the disk that contains your project:

dir .editorconfig /s

리포지토리의 루트 또는 프로젝트가 상주하는 디렉터리의 .editorconfig 파일에서 root=true 속성을 설정하여 EditorConfig 규칙의 범위를 제어할 수 있습니다.You can control the scope of your EditorConfig conventions by setting the root=true property in the .editorconfig file at the root of your repo or in the directory that your project resides. Visual Studio는 열린 파일의 디렉터리와 모든 부모 디렉터리에서 .editorconfig라는 파일을 찾습니다.Visual Studio looks for a file named .editorconfig in the directory of the opened file and in every parent directory. Visual Studio는 루트 파일 경로에 도달하거나 root=true 포함 .editorconfig 파일을 찾은 경우 검색을 중지합니다.Visual Studio stops searching if the root filepath is reached, or if a .editorconfig file with root=true is found.

언어 서비스에 대한 EditorConfig 지원Support EditorConfig for your language service

대부분의 경우 Visual Studio 언어 서비스를 구현할 때 EditorConfig 유니버설 속성을 지원하기 위해 추가 작업이 필요하지 않습니다.In most cases when you implement a Visual Studio language service, no additional work is needed to support EditorConfig universal properties. 사용자가 파일을 열면 코어 편집기에서 .editorconfig 파일을 자동으로 검색하여 읽은 다음 적절한 텍스트 버퍼와 보기 옵션을 설정합니다.The core editor automatically discovers and reads the .editorconfig file when users open files, and it sets the appropriate text buffer and view options. 하지만 일부 언어 서비스에서는 사용자가 텍스트를 편집하거나 서식을 지정할 때 항목에 대한 전역 설정(예: 탭, 공백) 대신 적절한 상황별 텍스트 보기 옵션을 사용하도록 선택합니다.However, some language services opt to use an appropriate contextual text view option rather than using global settings for items such as tabs and spaces when a user edits or formats text. 이러한 경우 EditorConfig 파일을 지원하도록 언어 서비스를 업데이트해야 합니다.In these cases, the language service must be updated to support EditorConfig files.

다음은 EditorConfig 파일을 지원하기 위해 전역 language-specific 옵션을 contextual 옵션으로 대체하여 언어 서비스를 지원하기 위해 필요한 변경 사항입니다.Following are the changes needed to update a language service to support EditorConfig files, by replacing a global language-specific option with a contextual option:

들여쓰기 스타일Indent style

바꾸기:Replace:

Microsoft.VisualStudio.TextManager.Interop.LANGPREFERENCES.fInsertTabsMicrosoft.VisualStudio.TextManager.Interop.LANGPREFERENCES.fInsertTabs
또는or
Microsoft.VisualStudio.Package.LanguagePreferences.InsertTabsMicrosoft.VisualStudio.Package.LanguagePreferences.InsertTabs

바꿀 대상:With:

!textBufferOptions.GetOptionValue(DefaultOptions.ConvertTabsToSpacesOptionId)!textBufferOptions.GetOptionValue(DefaultOptions.ConvertTabsToSpacesOptionId)
또는or
!textView.Options.GetOptionValue(DefaultOptions.ConvertTabsToSpacesOptionId)!textView.Options.GetOptionValue(DefaultOptions.ConvertTabsToSpacesOptionId)

들여쓰기 크기Indent size

바꾸기:Replace:

Microsoft.VisualStudio.TextManager.Interop.LANGPREFERENCES.uIndentSizeMicrosoft.VisualStudio.TextManager.Interop.LANGPREFERENCES.uIndentSize
또는or
Microsoft.VisualStudio.Package.LanguagePreferences.InsertTabs.IndentSizeMicrosoft.VisualStudio.Package.LanguagePreferences.InsertTabs.IndentSize

바꿀 대상:With:

textBufferOptions.GetOptionValue(DefaultOptions.IndentSizeOptionId)textBufferOptions.GetOptionValue(DefaultOptions.IndentSizeOptionId)
또는or
textView.Options.GetOptionValue(DefaultOptions.IndentSizeOptionId)textView.Options.GetOptionValue(DefaultOptions.IndentSizeOptionId)

탭 크기Tab size

바꾸기:Replace:

Microsoft.VisualStudio.TextManager.Interop.LANGPREFERENCES.uTabSizeMicrosoft.VisualStudio.TextManager.Interop.LANGPREFERENCES.uTabSize
또는or
Microsoft.VisualStudio.Package.LanguagePreferences.InsertTabs.TabSizeMicrosoft.VisualStudio.Package.LanguagePreferences.InsertTabs.TabSize

바꿀 대상:With:

textBufferOptions.GetOptionValue(DefaultOptions.TabSizeOptionId)textBufferOptions.GetOptionValue(DefaultOptions.TabSizeOptionId)
또는or
textView.Options.GetOptionValue(DefaultOptions.TabSizeOptionId)textView.Options.GetOptionValue(DefaultOptions.TabSizeOptionId)

참고 항목See also

.NET 코드 스타일 규칙.NET code style conventions
EditorConfig.orgEditorConfig.org
편집기에서 코드 작성Writing code in the editor