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

Visual Studio 2017에서는 프로젝트 또는 코드베이스에 EditorConfig 파일을 추가하여 코드베이스에서 작업하는 모든 사람들의 코딩 스타일을 일관적으로 유지할 수 있습니다.In Visual Studio 2017, you can add an EditorConfig file to your project or codebase to enforce consistent coding styles for everyone that works in the codebase. EditorConfig 설정은 전역 Visual Studio 텍스트 편집기 설정에 우선합니다.EditorConfig settings take precedence over global Visual Studio text editor settings. 따라서 해당 프로젝트와 관련된 텍스트 편집기 설정을 사용하도록 각 코드베이스를 조정할 수 있습니다.This means that you can tailor each codebase to use text editor settings that are specific to that project. Visual Studio 옵션 대화 상자에서 사용자 고유의 개인 편집기 기본 설정을 지정할 수 있습니다.You can still set your own personal editor preferences in the Visual Studio Options dialog box. 사용자가 .editorconfig 파일 없이 코드베이스에서 작업을 수행하거나 .editorconfig 파일이 특정 설정을 재정의하지 않은 경우 이러한 설정이 적용됩니다.Those settings apply whenever you're working in a codebase without an .editorconfig file, or when the .editorconfig file doesn't override a particular setting. 이러한 기본 설정의 예로 들여쓰기 스타일(탭 또는 공백)을 들 수 있습니다.An example of such a preference is indent style—tabs or spaces.

Visual Studio를 포함하여 다양한 코드 편집기와 IDE에서 EditorConfig 설정이 지원됩니다.EditorConfig settings are supported by numerous code editors and IDEs, including Visual Studio. 코드를 이용하여 휴대할 수 있는 구성 요소이며 Visual Studio 외부에서도 코딩 스타일을 적용할 수 있습니다.It's a portable component that travels with your code, and can enforce coding styles even outside of Visual Studio.

참고

Visual Studio에서 프로젝트에 EditorConfig 파일을 추가할 때 문서의 서식을 지정(편집 > 고급 > 문서 서식 또는 Ctrl+K, Ctrl+D)하지 않으면 기존 코드의 서식이 변경되지 않습니다.When you add an EditorConfig file to your project in Visual Studio, the formatting of existing code is not changed unless you format the document (Edit > Advanced > Format Document or Ctrl+K, Ctrl+D). 하지만 새로운 코드 줄은 EditorConfig 설정에 따라 서식이 지정됩니다.However, any new lines of code are formatted according to the EditorConfig settings.

코딩 일관성Coding consistency

EditorConfig 파일의 설정을 사용하면 사용하는 편집기나 IDE에 관계없이 코드베이스에서 들여 쓰기 스타일, 탭 너비, 줄의 끝 문자, 인코딩 등과 같은 일관된 코딩 스타일과 설정을 유지할 수 있습니다.Settings in EditorConfig files enable you to maintain consistent coding styles and settings in a codebase, such as indent style, tab width, end of line characters, encoding, and more, 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. 예를 들어, 코딩할 때 들여쓰기를 하면 탭 문자가 추가되는 것을 선호할 수 있습니다.For example, you might prefer that when you're coding, indenting 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.

지원되는 설정Supported settings

Visual Studio의 편집기는 다음과 같은 EditorConfig 속성의 핵심 집합을 지원합니다.The editor in Visual Studio supports the core set of EditorConfig properties:

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

EditorConfig 편집기 설정은 XML을 제외하고 Visual Studio가 지원하는 모든 언어에서 지원됩니다.EditorConfig editor settings are supported in all Visual Studio-supported languages except for XML. 또한 EditorConfig는 C# 및 Visual Basic에 대해 코드 스타일명명 규칙을 지원합니다.In addition, EditorConfig supports code style and naming conventions for C# and Visual Basic.

EditorConfig 파일 추가 및 제거Adding and removing EditorConfig files

EditorConfig 파일을 프로젝트나 코드베이스에 추가해도 기존 스타일이 새로운 스타일로 변환되지 않습니다.Adding an EditorConfig file to your project or codebase does not convert existing styles to the new ones. 예를 들어 파일에 탭으로 서식이 지정된 들여쓰기가 있는 경우 공백으로 들여쓰기가 적용되는 EditorConfig 파일을 추가해도 들여쓰기 문자가 공백으로 자동 변환되지 않습니다.For example, if you have indents in your file that are formatted with tabs, and you add an EditorConfig file that indents with spaces, the indent characters are not automatically converted to spaces. 하지만 새로운 코드 줄은 EditorConfig 파일에 따라 서식이 지정됩니다.However, any new lines of code are formatted according to the EditorConfig file. 또한 문서의 서식을 지정(편집 > 고급 > 문서 서식 또는 Ctrl+K, Ctrl+D)하는 경우 EditorConfig 파일의 설정이 기존 코드 줄에 적용됩니다.Additionally, if you format the document (Edit > Advanced > Format Document or Ctrl+K, Ctrl+D), the settings in the EditorConfig file are applied to existing lines of code.

프로젝트나 코드베이스에서 EditorConfig 파일을 제거하면 열려있는 코드 파일을 닫았다가 다시 열어야 새로운 코드 줄에 대해 전역 편집기 설정으로 돌아갑니다.If you remove an EditorConfig file from your project or codebase, you must close and reopen any open code files to revert to the global editor settings for new lines of code.

프로젝트 또는 솔루션에 EditorConfig 파일을 추가하려면 다음을 수행합니다.To add an EditorConfig file to a project or solution

  1. Visual Studio에서 프로젝트 또는 솔루션을 엽니다.Open a project or solution in Visual Studio. .editorconfig 설정을 솔루션의 모든 프로젝트에 적용할지 아니면 하나에만 적용할지에 따라 프로젝트 또는 솔루션 노드 중 하나를 선택합니다.Select either the project or solution node, depending on whether your .editorconfig settings should apply to all projects in the solution or just one. 프로젝트 또는 솔루션에서 폴더를 선택하여 .editorconfig 파일을 추가할 수 있습니다.You can also select a folder in your project or solution to add the .editorconfig file to.

  2. 메뉴 모음에서 프로젝트 > 새 항목 추가... 를 선택하거나 Ctrl+Shift+A를 누릅니다.From the menu bar, choose Project > Add New Item..., or press Ctrl+Shift+A.

    새 항목 추가 대화 상자가 열립니다.The Add New Item dialog box opens.

  3. 왼쪽의 범주에서 일반을 선택한 다음, 텍스트 파일 템플릿을 선택합니다.In the categories on the left, choose General, and then choose the Text File template. 이름 텍스트 상자에 .editorconfig를 입력한 다음 추가를 선택합니다.In the Name text box, enter .editorconfig and then choose Add.

    .editorconfig 파일이 솔루션 탐색기에 표시되고 편집기에서 열립니다.An .editorconfig file appears in Solution Explorer, and it opens in the editor.

    솔루션 탐색기의 .editorconfig 파일

  4. 다음과 같이 원하는 대로 파일을 편집합니다.Edit the file as desired, for example:

    root = true
    
    [*.{cs,vb}]
    indent_size = 4
    trim_trailing_whitespace = true
    
    [*.cs]
    csharp_new_line_before_open_brace = methods
    

또는 EditorConfig 언어 서비스 확장을 설치할 수 있습니다.Alternatively, you can install the EditorConfig Language Service extension. 이 확장을 설치한 후, 마우스 오른쪽 단추를 클릭하거나 솔루션 탐색기의 솔루션 노드, 프로젝트 노드 또는 폴더의 바로 가기 메뉴에서 추가 > .editorconfig 파일을 선택하면 됩니다.After you install this extension, simply choose Add > .editorconfig File from the right-click or context menu of the solution node, project node, or any folder in Solution Explorer.

확장을 사용하여 .editorconfig 파일 추가

EditorConfig 설정 재정의Override EditorConfig settings

파일 계층 구조의 폴더에 .editorconfig 파일을 추가하는 경우 해당 설정이 이 수준과 그 아래에 있는 모든 파일에 적용됩니다.When you add an .editorconfig file to a folder in your file hierarchy, its settings apply to all applicable files at that level and below. 코드베이스의 다른 부분과는 다른 규칙을 사용하는, 특정 프로젝트, 코드베이스 또는 코드베이스 일부에 대한 EditorConfig 설정을 재정의할 수 있습니다.You can also override EditorConfig settings for a particular project, codebase, or part of a codebase, such that it uses different conventions than other parts of the codebase. 이는 다른 위치에서 코드를 통합하면서 해당 규칙을 변경하지 않으려는 경우에 유용할 수 있습니다.This can be useful when you incorporate code from somewhere else, and don’t want to change its conventions.

EditorConfig 설정의 일부 또는 전부를 재정의하려면 이러한 재정의된 설정을 적용할 파일 계층 구조 수준에서 .editorconfig 파일을 추가합니다.To override some or all of the EditorConfig settings, add an .editorconfig file at the level of the file hierarchy you want those overridden settings to apply. 새 EditorConfig 파일 설정은 동일한 수준 및 모든 하위 디렉터리의 파일에 적용됩니다.The new EditorConfig file settings apply to files at the same level and any subdirectories.

EditorConfig 계층 구조

설정의 전부가 아닌 일부를 재정의하려는 경우 .editorconfig 파일에서 해당 설정만 지정하면 됩니다.If you want to override some but not all of the settings, specify just those settings in the .editorconfig file. 하위 수준 파일에 명시적으로 나열된 속성만 재정의됩니다.Only those properties that you explicitly list in the lower-level file are overridden. 상위 수준 .editorconfig 파일의 다른 설정은 계속 적용됩니다.Other settings from higher-level .editorconfig files continue to apply. 모든 상위 수준 .editorconfig 파일에서 이 코드베이스 부분에 적용된 설정이 없음_을 확인하려면 root=true 속성을 하위 수준 .editorconfig 파일에 추가합니다.If you want to ensure that _no settings from any higher-level .editorconfig files are applied to this part of the codebase, add the root=true property to the lower-level .editorconfig file:

# top-most EditorConfig file
root = true

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.

EditorConfig 파일 편집Editing EditorConfig files

Visual Studio를 통해 IntelliSense 완성 목록을 제공하여 .editorconfig 파일을 편집할 수 있습니다.Visual Studio helps you edit .editorconfig files by providing IntelliSense completion lists.

.editorconfig 파일의 IntelliSense

EditorConfig 파일을 편집한 후 새 설정을 적용하려면 코드 파일을 다시 로드해야 합니다.After you've edited your EditorConfig file, you must reload your code files for the new settings to take effect.

다양한 .editorconfig 파일을 편집하는 경우 EditorConfig 언어 서비스 확장이 유용할 수 있습니다.If you edit numerous .editorconfig files, you may find the EditorConfig Language Service extension helpful. 이 확장의 기능 중 일부에는 구문 강조 표시, 향상된 IntelliSense, 유효성 검사 및 코드 서식 지정이 포함되어 있습니다.Some of the features of this extension include syntax highlighting, improved IntelliSense, validation, and code formatting.

EditorConfig 언어 서비스 확장을 사용한 IntelliSense

Example

다음 예제에서는 .editorconfig 파일을 프로젝트에 추가하기 전과 후의 C# 코드 조각 들여쓰기 상태를 보여줍니다.The following example shows the indent state of a C# code snippet before and after adding an .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.

텍스트 편집기 탭 설정

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

EditorConfig를 사용하기 전의 코드

다음 콘텐츠를 포함하여 .editorconfig라는 새 파일을 프로젝트에 추가합니다.Add a new file called .editorconfig to the project, with the following contents. [*.cs] 설정은 이 변경 내용이 이 프로젝트의 C# 코드 파일에만 적용된다는 것을 의미합니다.The [*.cs] setting means that this change applies only to C# code files in the project.

# Top-most EditorConfig file
root = true

# Tab indentation
[*.cs]
indent_style = tab

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

Tab 키가 탭 문자 추가

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

즉, 도구 > 옵션 > 텍스트 편집기의 편집기 설정(예: 들여쓰기 크기 및 스타일, 탭 크기 또는 코딩 규칙)이 디렉터리 구조에서 프로젝트 또는 위의 EditorConfig 파일에 지정되어 있는 경우 EditorConfig 파일의 규칙은 옵션의 설정을 재정의합니다.This means that if any editor settings in Tools > Options > Text Editor (such as indent size and style, tab size, or coding conventions) are specified in an EditorConfig file at or above the project in the directory structure, the conventions in the EditorConfig file 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 turns off EditorConfig support for Visual Studio.

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

명령 프롬프트를 열고 사용자의 프로젝트가 포함된 디스크의 루트에서 다음 명령을 실행하여 부모 디렉터리에서 .editorconfig 파일을 찾을 수 있습니다.You can find any .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. 루트 파일 경로에 도달하거나 root=true.editorconfig 파일이 발견되면 검색이 종료됩니다.The search ends when it reaches the root filepath, or if an .editorconfig file with root=true is found.

참고 항목See also