| <rowcolor=#ffffff,#dddddd> 데이터 직렬화 형식과 설정 파일 | |||
| {{{#!wiki style="min-height: calc(1.5em + 5px); margin: 0 -10px -5px" {{{#!folding [ 펼치기 · 접기 ] {{{#!wiki style="margin: -5px -1px -11px" | <colbgcolor=#4d5767,#4d5767><colcolor=#ffffff,#dddddd> 데이터 직렬화 형식 | <colbgcolor=#4d5767,#4d5767><colcolor=#ffffff,#dddddd> 텍스트 | CSV · JSON(NDJSON/JSON Lines) · XML |
| 바이너리 | flatbuffers · protobuf | ||
| 설정 파일 | 텍스트 | JSON(YAML · JSON5 · JSONC) · XML · INI(dotenv · EditorConfig · TOML) | }}}}}}}}} |
| <colcolor=#000,#fff><bgcolor=#e0efef> EditorConfig | |
| | |
| <colbgcolor=#e0efef> 종류 | 설정 파일 |
| 개발 | EditorConfig Team |
| 출시 | |
| 안정 버전 | v0.17.2 |
| 링크 | |
1. 개요
개별 도구에 종속되지 않는 문서 편집기용 설정 규약 및 설정 파일.같은 팀이더라도 개발자에 따라 사용하는 개발환경이 다르고, 운영체제나 문서 편집기, 통합 개발 환경 소프트웨어마다 기본 설정이 다르거나 서로 설정이 호환되지 않아 들여쓰기 길이, 개행 문자(CRLF) 설정 같은 코딩 스타일을 통일되게 적용하는 데에 어려움이 있다.
이런 문제를 해결하기 위해 대부분의 문서 편집기가 공통적으로 가지는 설정들을 모아 다양한 도구에서 호환되도록 표준화한 규격이자 설정 파일 포맷이다.
2. 특징
에디터나 IDE 내부 설정에 저장되는 것이 아니라 외부 설정 파일 형태이다. 따라서 설정 파일의 버전 관리가 가능하다. 코드베이스나 프로젝트 단위로 설정을 다르게 관리할 수 있다는 장점도 가진다.마찬가지로 에디터 내부 설정 방식과 무관하게 외부 파일로 저장되기 때문에, 해당 파일 형식만 인식할 수 있다면 여러 에디터에서 동일한 설정을 공유하는 것이 가능하다. 대부분의 에디터에서 EditorConfig 지원을 내장하거나 플러그인 등을 사용하는 방식을 통해 지원한다.
기본적으로
.editorconfig라는 이름의 파일에 작성한다. 문법은 전반적으로 INI와 유사하게 언어나 경로 패턴별로 섹션을 나누고, <키> = <값> 형태로 적용할 설정을 나열하는 방식이다.3. 지원 설정
| <rowkeepall><rowcolor=#000,#fff> 속성 | 값 | 설명 |
indent_style | tabspace | 들여쓰기 탭/공백 사용 여부 |
indent_size | 0보다 크거나 같은 숫자tab | 들여쓰기 길이 |
tab_width | 0보다 크거나 같은 숫자 | 탭 표시 길이 |
end_of_line | lrcrcrlf | 줄 바꿈에 사용할 개행 문자 종류. 운영체제마다 다른 개행 종류를 통일하기 위한 용도이다. |
charset | latin1utf-8utf-8-bomutf-16beutf-16le | 문자 인코딩 |
spelling_language | ISO 639 - ISO 3166 | 문법 검사 언어 |
trim_trailing_whitespace | truefalse | 줄 끝부분(trailing)에 위치한 공백을 남겨둘지 여부. AB··⏎ 와 같이 줄 끝에 공백이 있는 경우 인식하기 어렵기 때문에 지우는 것이 일반적이나, 마크다운과 같이 줄 끝의 공백이 문법상 다르게 해석되는 경우도 있기 때문이다. |
insert_final_newline | truefalse | 파일이 항상 개행 문자로 끝날지 여부 |
root | truefalse | 해당 .editorconfig 파일이 루트 파일임을 의미한다. 해당 파일 이후로 부모 디렉토리에서 별도의 파일을 탐색하지 않도록 명시하는 설정. |
모든 설정은 따로 기본값이 없으며, 설정하지 않을 시 에디터의 기본 동작 방식대로 동작한다. 만약 설정이 중첩되더라도, 값으로
unset을 지정할 시 값을 지정하지 않은 것으로 해석된다.대부분의 설정은 대소문자를 구분하지 않는다.
4. 지원되는 개발 환경
- Prettier -
.editorconfig파일이 존재할 경우, editorconfig와 겹치는 설정은 자동으로 적용한다.# - Visual Studio
- VS 2017 이후 - EditorConfig 지원이 기본으로 내장되었다. 설정 UI를 띄우거나 기본 포매팅 설정을
.editorconfig로 내보낼 수 있다.# - VS 2017 미만 - EditorConfigTeam.EditorConfig#
- Visual Studio Code
- EditorConfig.EditorConfig - 현재
charset설정이 지원되지 않는다. - Eclipse
- JetBrains - 내장 플러그인을 활성화할 경우 지원된다. 표준 설정 외에도
ij_접두사가 붙은 비표준 항목을 추가로 사용한다.# - vim
- editorconfig-vim - 공식 확장#
- Neovim - 0.9버전부터 editorconfig 지원이 기본으로 내장되었다.[1][2]
- Sublime Text
- EditorConfig -
tab_width설정이 지원되지 않는다. - BBEdit - 11.1 버전부터 내장 지원된다.[3]
4.1. 편집 지원
설정 인식 및 적용이 아닌 설정 파일 편집 자체의 지원을 말한다. 기본적으로 INI나 TOML과 유사한 형식이라 INI 언어 지원으로 지원되는 경우도 있고, Visual Studio나 JetBrains IDE와 같이 별도의 설정 UI를 제공하는 경우도 있다.4.2. 기타
- home-manager -
$HOME/.editorconfig를 자동으로 생성해 주는 모듈이 있다. 이 방식으로 생성할 경우root=true가 자동으로 삽입된다.##