에디터 설정
에디터 설정
에디터는 코드를 입력하고 읽는 일의 대부분이 일어나는 도구. 이 글은 대표 에디터 · 표준 프로토콜 (LSP · DAP) · EditorConfig.
1. Visual Studio Code
Microsoft 가 2015 년 4월 Build 컨퍼런스에서 공개. 같은 해 11월 MIT 라이선스로 오픈소스화 (저장소 microsoft/vscode). Electron (Chromium + Node.js) 위에 TypeScript 로 작성. 마켓플레이스의 확장 다수가 무료라는 점, 그리고 Microsoft 가 같은 시기에 표준화한 LSP · DAP 가 결합되며 입문 에디터의 기본 선택지로 자리잡음.
VS Code 에는 두 갈래 — Microsoft 가 배포하는 빌드 (텔레메트리 · 일부 독점 확장) 와, 같은 소스를 빌드한 VSCodium (커뮤니티, telemetry 제거).
2. LSP — Language Server Protocol
Microsoft 가 2016 년 처음 공개. 에디터와 언어 도구 (자동완성 · 이동 · 진단) 사이의 JSON-RPC 프로토콜. 서버를 한 번 만들면 LSP 를 따르는 어떤 에디터에서도 동작. 결과적으로 Neovim · Helix · Zed · Emacs · VS Code · JetBrains 가 같은 언어 서버를 공유할 수 있는 기반.
3. DAP — Debug Adapter Protocol
Microsoft 가 2018 년 공개. 디버거와 에디터 사이의 프로토콜. LSP 와 같은 의도를 디버거에 적용.
4. JetBrains 계열
IntelliJ IDEA (2001) · PyCharm (2010) · WebStorm (2010) · GoLand (2017) 등. 언어별로 깊이 통합된 정적 분석 · 리팩터 · 디버거가 강점. 유료 (개인용 일부 무료) 라이선스. Android Studio 는 IntelliJ Platform 을 기반.
5. Cursor · Zed · Neovim
- Cursor (2023, Anysphere) — VS Code 포크 위에 AI 보조를 통합.
- Zed (2024, Zed Industries) — Rust. Atom 의 핵심 인력이 만든 GPU 가속 에디터. macOS 우선이었으나 Linux · Windows 지원이 진행 중.
- Neovim (2014) — Vim 의 포크. Lua 설정 · 내장 LSP 클라이언트.
6. EditorConfig
editorconfig.org 의 표준. .editorconfig 파일에 들여쓰기 · 줄바꿈 · 인코딩 같은 기본 규약을 적어 두면 다수 에디터가 자동으로 따름. VS Code 는 확장 (EditorConfig.EditorConfig) 으로, JetBrains 는 내장.
7. VS Code 핵심 확장
| 영역 | 확장 |
|---|---|
| 포맷 | Prettier · Biome |
| 린트 | ESLint · Ruff · Java by Red Hat |
| 언어 | Python (ms-python) · Pylance · Rust Analyzer · Go · Java Extension Pack |
| Git | GitLens |
| 환경 | EditorConfig · Remote SSH · WSL · Dev Containers |
| 디버그 | DAP 기반 각 언어 디버거 |
확장 중 다수가 LSP 서버를 자동 설치 · 관리. Pylance 를 설치하면 Microsoft 의 Python 언어 서버를 함께 받음.
8. 워크스페이스 설정
.vscode/settings.json 에 두면 사용자 글로벌 설정과 분리. 팀이 공유하는 규약은 워크스페이스 쪽이 적합:
// .vscode/settings.json
{
"editor.formatOnSave": true,
"editor.codeActionsOnSave": { "source.fixAll.eslint": "explicit" },
"[python]": {
"editor.defaultFormatter": "charliermarsh.ruff",
"editor.formatOnSave": true
},
"files.eol": "\n",
"files.insertFinalNewline": true
}
.vscode/extensions.json 에 권장 확장을 적어 두면 새 협업자에게 자동 안내.
.editorconfig 예:
root = true
[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
indent_style = space
indent_size = 2
[*.{md,markdown}]
trim_trailing_whitespace = false
[Makefile]
indent_style = tab
9. 다른 길
선택은 환경에 따라 갈림.
- Java / Kotlin 대규모 프로젝트나 깊은 리팩터가 잦으면 IntelliJ 계열의 정적 분석이 효율적.
- 가벼운 다언어 작업 · 풍부한 확장 · 원격 / 컨테이너 개발 (Remote SSH · Dev Containers) 이 중요하면 VS Code.
- 키보드 중심 워크플로 · 터미널 안 작업 · 서버 SSH 환경에서는 Neovim 이 빠름.
- AI 보조 통합을 우선하면 Cursor · Windsurf 같은 VS Code 포크 또는 VS Code + Copilot 조합.
10. 설치 예
# Windows: winget
winget install -e --id Microsoft.VisualStudioCode
winget install -e --id JetBrains.IntelliJIDEA.Community
# macOS: Homebrew
brew install --cask visual-studio-code
brew install --cask intellij-idea-ce
brew install neovim
확장 설치 (VS Code CLI):
code --install-extension EditorConfig.EditorConfig
code --install-extension dbaeumer.vscode-eslint
code --install-extension esbenp.prettier-vscode
code --install-extension charliermarsh.ruff
11. 자주 걸리는 자리
사용자 글로벌 vs 워크스페이스 충돌 — 포매터가 두 개 동작하는 사고. editor.defaultFormatter 를 언어별로 명시.
ESLint + Prettier 동시 사용 시 규칙 충돌 — eslint-config-prettier 가 충돌 규칙을 끄는 표준 처방. 또는 Biome 처럼 한 도구로 묶는 선택.
WSL · Remote SSH 환경에서 확장 — "원격에서 다시 설치" 가 필요하다는 안내를 놓쳐 자동완성이 동작 안 하는 경우.
\r\n vs \n 섞임 — .editorconfig 의 end_of_line = lf 와 .gitattributes 의 * text=auto eol=lf 를 함께 두면 일관성 유지.
JetBrains IDE 인덱싱 — 인덱싱이 끝나기 전 검색 결과가 비어 보이는 경우. 인덱싱 진행 표시줄 확인.
하고픈 말
LSP · DAP 의 표준화 덕분에 같은 언어 서버를 여러 에디터가 공유합니다. 도구는 취향이지만 EditorConfig · .gitattributes 의 일관성은 팀 자산. AI 보조 (Cursor · Copilot · Claude Code) 의 등장으로 에디터 안의 워크플로가 빠르게 변하는 시기, 단 본업의 도구 자체는 단순할수록 안전.
Next
- linting-formatting
- python-venv-poetry-history
VS Code 공식 문서 · Language Server Protocol · Debug Adapter Protocol · EditorConfig 공식 사이트 · JetBrains 공식 사이트 · Neovim 공식 사이트 · Zed 공식 사이트 · VSCodium · Awesome LSP Servers 를 참고합니다.