에디터 세팅
에디터(editor)는 co-pilot입니다. 한 번 설정해 두면 방해를 줄이고 제 역할을 하기 시작합니다.
유형: Build
언어: 없음
선수 지식: Phase 0, Lesson 01
예상 시간: 약 20분
학습 목표
- Python, Jupyter, 린팅(linting), 원격 SSH에 필요한 VS Code 확장(extension)을 설치합니다.
- 저장 시 포맷(format-on-save), 타입 검사(type checking), 노트북 출력 스크롤(notebook output scrolling)을 AI 워크플로우에 맞게 설정합니다.
- 원격 SSH(Remote SSH)를 설정해 원격 GPU 컴퓨터의 코드를 로컬처럼 편집하고 디버그합니다.
- Cursor, Windsurf, Neovim 같은 에디터 대안을 비교하고 AI 작업에서의 절충(tradeoff)을 판단합니다.
문제
AI 엔지니어링을 배우면 에디터 안에서 수많은 시간을 보냅니다. Python을 쓰고, 노트북을 실행하고, 훈련 루프(training loop)를 디버그하고, GPU 컴퓨터에 SSH로 접속합니다. 잘못 설정된 에디터는 매 세션마다 마찰(friction)을 만듭니다. 자동완성(autocomplete)이 없고, 타입 힌트(type hint)가 없고, 인라인 오류(inline error)가 보이지 않고, 포맷팅을 손으로 해야 하고, 터미널 워크플로우가 불편해집니다.
제대로 설정하는 데는 20분이 걸립니다. 건너뛰면 매일 20분씩 잃게 됩니다.
개념
AI 엔지니어링 에디터 설정에는 다섯 가지가 필요합니다.
graph TD
L5["5. Remote Development<br>GPU box, cloud VM에 SSH 접속"] --> L4
L4["4. Terminal Integration<br>Script 실행, debug, GPU monitoring"] --> L3
L3["3. AI-Specific Settings<br>Auto-format, type checking, rulers"] --> L2
L2["2. Extensions<br>Python, Jupyter, Pylance, GitLens"] --> L1
L1["1. Base Editor<br>VS Code — free, extensible, universal"]
직접 만들기
Step 1: VS Code 설치
VS Code를 권장 에디터로 사용합니다. 무료이고, 모든 OS에서 동작하며, Jupyter 노트북 지원(support)이 좋고, AI 작업에 필요한 확장 생태계(extension ecosystem)가 충분합니다.
code.visualstudio.com에서 내려받습니다.
터미널에서 확인합니다.
code --version
macOS에서 code 명령이 없다면 VS Code를 열고 Cmd+Shift+P를 누른 뒤 "Shell Command"를 검색해 "Install 'code' command in PATH"를 선택합니다.
Step 2: 필수 확장 설치
VS Code 통합 터미널(integrated terminal)에서 아래 확장을 설치합니다.
code --install-extension ms-python.python
code --install-extension ms-python.vscode-pylance
code --install-extension ms-toolsai.jupyter
code --install-extension eamodio.gitlens
code --install-extension ms-vscode-remote.remote-ssh
code --install-extension ms-python.debugpy
code --install-extension ms-python.black-formatter
code --install-extension charliermarsh.ruff
각 확장의 역할은 아래와 같습니다.
| 확장 | 이유 |
|---|
| Python | 언어 지원, 가상환경 감지(virtual env detection), 실행/디버그 |
| Pylance | 빠른 타입 검사, 자동완성, 임포트 해석(import resolution) |
| Jupyter | VS Code 안에서 노트북 실행, 변수 탐색기(variable explorer) |
| GitLens | 누가 무엇을 바꿨는지 확인, 인라인 Git 블레임(blame) |
| Remote SSH | 원격 GPU 박스(box) 폴더를 로컬처럼 열기 |
| Debugpy | Python 단계별 디버깅(step-through debugging) |
| Black Formatter | 저장 시 자동 포맷팅 |
| Ruff | 빠른 린팅, 흔한 실수 탐지 |
이 강의의 code/vscode/extensions.json에는 권장 확장 목록이 들어 있습니다. 프로젝트 폴더의 .vscode/extensions.json으로 복사하면 VS Code가 설치를 제안합니다.
Step 3: 설정 적용
이 강의의 code/vscode/settings.json을 참고해 프로젝트의 .vscode/settings.json에 적용하거나, Settings > Open Settings (JSON)에서 직접 설정합니다.
AI 작업에 중요한 설정은 아래와 같습니다.
{
"python.analysis.typeCheckingMode": "basic",
"editor.formatOnSave": true,
"editor.rulers": [88, 120],
"notebook.output.scrolling": true,
"files.autoSave": "afterDelay"
}
왜 중요한지 봅니다.
- 타입 검사 basic 모드: 실행 전에 잘못된 인자 타입(argument type)을 잡습니다. 텐서 형태 불일치(tensor shape mismatch)나 API 매개변수(parameter) 실수를 줄입니다.
- 저장 시 포맷팅: 포맷팅을 직접 생각하지 않아도 됩니다. Black이 처리합니다.
- 88과 120 컬럼 가이드: Black은 88 컬럼을 기준으로 줄바꿈(wrap)합니다. 120 표시(marker)는 독스트링(docstring)과 주석이 너무 길어지는 지점을 보여줍니다.
- 노트북 출력 스크롤: 훈련 루프가 수천 줄을 출력해도 노트북 출력 패널(output panel)이 폭발하지 않습니다.
- 자동 저장(auto-save): 저장을 잊어 오래된 코드(stale code)를 실행하는 일을 줄입니다.
Step 4: 터미널 통합
VS Code 통합 터미널은 훈련 스크립트 실행, GPU 모니터링, 환경 관리에 사용합니다.
{
"terminal.integrated.defaultProfile.osx": "zsh",
"terminal.integrated.defaultProfile.linux": "bash",
"terminal.integrated.fontSize": 13,
"terminal.integrated.scrollback": 10000
}
유용한 단축키입니다.
| 동작 | macOS | Linux/Windows |
|---|
| 터미널 토글 | Ctrl+` | Ctrl+` |
| 새 터미널 | Ctrl+Shift+`` | Ctrl+Shift+`` |
| 터미널 분할 | Cmd+\ | Ctrl+\ |
터미널 분할은 한쪽에서 훈련 스크립트를 실행하고 다른 쪽에서 nvidia-smi -l 1이나 watch -n 1 nvidia-smi로 GPU를 볼 때 유용합니다.
Step 5: 원격 개발(GPU 박스에 SSH)
원격 SSH는 AI 작업에서 가장 중요한 확장 중 하나입니다. 클라우드 VM, 연구실 서버, Lambda, Vast.ai 같은 원격 컴퓨터에서 훈련을 돌릴 때, 원격 파일시스템을 열고 파일 편집, 터미널 실행, 디버깅을 로컬처럼 할 수 있습니다.
설정 순서입니다.
- 원격 SSH 확장을 설치합니다.
Ctrl+Shift+P 또는 Cmd+Shift+P를 누르고 "Remote-SSH: Connect to Host"를 검색합니다.
user@your-gpu-box-ip를 입력합니다.
- VS Code가 원격 컴퓨터에 서버 구성요소(server component)를 자동 설치합니다.
비밀번호 없는 접근(passwordless access)을 위해 SSH 키(key)를 설정합니다.
ssh-keygen -t ed25519 -C "your.name@example.com"
ssh-copy-id user@your-gpu-box-ip
~/.ssh/config에 호스트(host)를 등록하면 편합니다.
Host gpu-box
HostName 203.0.113.50
User ubuntu
IdentityFile ~/.ssh/id_ed25519
ForwardAgent yes
이제 Remote-SSH: Connect to Host > gpu-box로 접속할 수 있습니다.
대안
Cursor
cursor.com은 AI 코드 생성(code generation)이 내장된 VS Code 포크(fork)입니다. 같은 확장 생태계와 설정 형식을 사용하므로 이 강의의 설정을 대부분 그대로 적용할 수 있습니다.
Windsurf
windsurf.com도 AI 우선(AI-first) VS Code 포크입니다. 확장, 설정, 원격 SSH 지원이 유사합니다.
Vim/Neovim
이미 Vim이나 Neovim에 익숙하고 생산성이 높다면 계속 사용해도 됩니다. AI Python 작업의 최소 구성은 아래와 같습니다.
- 타입 검사: pyright 또는 pylsp
- 언어 서버 통합(language server integration): nvim-lspconfig
- 노트북식 실행(notebook-like execution): jupyter-vim 또는 molten-nvim
- 파일/심볼 검색: telescope.nvim
- 포맷팅/린팅: none-ls.nvim과 black, ruff
이미 쓰고 있지 않다면 지금 새로 시작하지 않는 편이 좋습니다. 에디터 학습 곡선이 AI 엔지니어링 학습과 경쟁하게 됩니다.
사용해보기
설정 후 일상 워크플로우는 아래처럼 됩니다.
- VS Code에서 프로젝트 폴더를 열거나 원격 SSH로 GPU 박스에 접속합니다.
- 자동완성, 타입 힌트, 인라인 오류를 보면서 Python을 작성합니다.
- Jupyter 확장으로 노트북을 에디터 안에서 실행합니다.
- 통합 터미널에서 훈련 스크립트,
uv pip install, GPU 모니터링을 실행합니다.
- 커밋 전에 GitLens와 소스 제어(source control) 보기로 변경사항을 검토합니다.
연습문제
- VS Code와 Step 2의 확장을 모두 설치합니다.
- 이 강의의
settings.json을 VS Code 설정에 적용합니다.
- Python 파일을 열고 Pylance 타입 힌트와 Black 저장 시 포맷팅이 동작하는지 확인합니다.
- 원격 컴퓨터 접근 권한이 있다면 원격 SSH를 설정하고 원격 폴더를 엽니다.
핵심 용어
| 용어 | 흔한 설명 | 실제 의미 |
|---|
| LSP(Language Server Protocol) | 자동완성 엔진 | 에디터가 언어별 서버(language-specific server)에서 타입 정보, 자동완성, 진단(diagnostic)을 받는 표준 프로토콜 |
| Pylance | Python 플러그인 | Pyright 기반 타입 검사와 IntelliSense를 제공하는 Microsoft Python 언어 서버 |
| 원격 SSH(Remote SSH) | 서버에서 작업 | 원격 컴퓨터에 VS Code 서버를 띄우고 로컬 에디터처럼 사용하는 확장 |
| 저장 시 포맷(Format on save) | 자동 정렬기 | 저장할 때 포맷터(formatter)가 실행되어 코드 스타일을 맞추는 설정 |
| Debugpy | Python 디버거 | VS Code에서 Python 중단점(breakpoint)과 단계별 디버깅을 가능하게 하는 디버거 |
더 읽을거리