Search
Duplicate

EditorConfig

간단소개
자주 봤을 .editorconfig 파일에 대한 간단 소개!
팔만코딩경 컨트리뷰터
ContributorNotionAccount
주제 / 분류
개발환경
Scrap
태그
EditorConfig
vim
VSCode
9 more properties

.editorconfig 파일?

오픈소스를 구경하다 보면 심심찮게 .editorconfig 파일을 볼 수 있습니다.
root = true [*] charset = utf-8 end_of_line = lf insert_final_newline = true indent_style = space indent_size = 2 tab_size = 8 [{Makefile,*.{mk,c,h,cpp,hpp,tpp,ixx}}] indent_style = tab indent_size = 4 tab_size = unset
Shell
복사
.editorconfig 파일 예시
대충 이런 식으로 생겼는데, 이게 어디에 쓰이는 걸까요?
EditorConfig라는 이름 그대로, 에디터의 설정 파일입니다.

지원 범위

EditorConfig 공식 사이트에서도 볼 수 있는데,
GitHub, IntelliJ, Visual Studio 등에서 기본으로 지원하고
Vim, Notepad++, Visual Studio Code 등에서도 플러그인을 통해 지원합니다.
그냥 사실상 모든 에디터에서 지원한다고 보면 됩니다.

기능

프로젝트마다 꼭 정해두고 사용하는 것들이 있습니다.
charset
줄바꿈 (LF/CRLF)
들여쓰기 (tab/space, 크기)
그 중에 이런 것들은 대부분의 에디터에서 설정할 수 있는데요,
에디터마다 설정 파일을 만들 필요 없이, EditorConfig에서 이 설정을 모두 지원합니다.

문법

.editorconfig 파일의 문법은 ini와 비슷합니다.
대신 섹션에 파일명 패턴이 들어가고, 주석은 ; 대신 #으로 시작합니다.
# #으로 시작하는 줄은 주석입니다. # 속성은 `속성 = 값` 형태로 쓸 수 있습니다. root = true # [패턴] 뒤에 오는 속성은 그 패턴에 맞는 파일에 적용됩니다. # 예를 들어 모든 파일에 적용할 속성은 [*] 뒤에 쓰면 됩니다. [*] charset = utf-8
Shell
복사
charset만 설정하는 간단한 .editorconfig 예시

속성

모든 에디터에서 쓸 수 있게 만들려다 보니, 중요한 속성 몇 가지가 전부입니다.

root

root는 특별한 속성입니다.
각 에디터 (또는 EditorConfig 플러그인)은 어떤 파일을 편집할 때
그 파일에 적용할 설정을 찾기 위해 .editorconfig 파일을 찾습니다.
root = true로 지정하면 .editorconfig 파일을 찾는 과정을 멈출 수 있습니다.
일반적으로 프로젝트 루트 디렉터리에서 roottrue로 지정합니다.

charset

utf-8이나 utf-8-bom, latin1 등 charset을 설정할 수 있습니다.

indent_style

들여쓰기를 탭으로 할지 띄어쓰기로 할지 설정할 수 있습니다.
space 또는 tab으로 설정할 수 있습니다.

indent_size

들여쓰기의 크기를 설정할 수 있습니다.
24 등의 크기를 적어도 되고, tab이라고 적어서 tab_width를 사용할 수도 있습니다.

tab_width

들여쓰기와 별개로, 탭의 크기를 따로 설정할 수 있습니다.
기본값으로 indent_size가 되기 때문에 보통 따로 설정하지 않아도 됩니다.

end_of_line

줄바꿈 스타일일 지정할 수 있습니다.
lfcrlf, 또는 cr을 사용할 수 있습니다.

와일드카드 패턴

glob 패턴이랑 비슷해 보이지만 사실 좀 많이 다릅니다.
많이 쓰는 몇 가지만 설명하겠습니다.

*

glob의 *과 비슷하게, 구분자(/)를 제외하고, 몇 글자든 들어갈 수 있습니다.
예를 들어 c파일에만 적용하려면 [*.c]로 쓸 수 있습니다.
.gitignore와 비슷하게, [*]은 하위 디렉터리를 포함한 모든 파일에 적용됩니다.

**

glob의 **과 비슷하게 구분자(/)를 포함해서 몇 글자든 들어갈 수 있지만,
globstar와는 다른 방식을 사용하기 때문에 [src/**/*.c]대신 [src/**.c]로 써야 합니다.
EditorConfig의 src/**/*.csrc/main.c를 포함하지 않습니다.

{a,b,c}

a, b, c 증 하나.
예를 들어 모든 c 파일과 h 파일에 적용하고 싶다면 [*.{c,h}]로 쓸 수 있습니다.
[{Makefile,*.{c,h}}]처럼 중첩도 가능합니다.