VS Code 로 넘어가기 (2019)

올해 소소한 목표로 vim / neovim 아닌 에디터를 GUI 쓸 때 기본 에디터로 써보자로 하고 vscode (for mac, linux) 를 써보는 중.

대략 위 내용을 작년 1월에 얘기했었는데, 대략 올해 늦봄에야 vim이 아닌 주 개발 환경을 구성. 변명을 하자면 작년엔 출장이 잦았고 그러다보니 로컬에서 GUI로 VSCode를 쓰는게 어려웠음. 그러다 늦봄 (5월쯤) VSCode Insider Preview와 원격 개발 확장 기능 쓰는 걸로 이전.

이전까지 주로 사용한 것은 SSH 위에서 vim/neovim 를 썼고 이걸 대체할 non-VIM환경을 시도해봤는데 — 로컬 CLion / VSCode 혹은 몇가지 원격 환경을 시도 — 항상 뭔가 맘에 안드는게 있더라.

  • 명령행 기반으로 작업하면 현대적인 GUI 도구류를 쓰기 불편하다. X를 원격으로도 쓰려고 해봤는데, 장담컨대 X터널링으로 GUI 쾌적하게 쓰는 사람은 없으리라 생각한다. 항상 광대역 + 낮은 지연시간 환경을 쓸 수 있는 것도 아니고.
  • 지연 시간 jitter가 편집 중에 영향을 준다. Mosh 같은 도구를 쓰면 화면을 로컬에서 에뮬레이견 해 주니 좀 덜하지만 종종 빡침.
  • 설정 동기화. 새로 서버/VM/컨테이너 만들 때 환경을 일정하게 유지하는게 번잡하다.

VSCode 로 옮기고 4달 정도 된 것 같은데 위 문제를 어느 정도는 해결한듯 하다.

로컬 환경에서 쓰는 IDE라서 원격 확장 쓰면서 걱정을 좀 했는데, 내가 쓰는 기능들은 다 돌더라. GitLense (git blame + git log 미리보기), C++ / C# / python 개발 환경이 꼭 필요한데 모두 정상 동작. 마크다운 관련 기능 (내장 기능인 미리보기나 확장 기능인 pdf 변환)도 잘 돌고. 다만, VS Code는 서버 쪽 쉘이 bash여야 동작하는게 문제긴한데, VS Code의 내장 터미널에서 쓸 쉘은 따로 지정할 수 있어서 어지간한 경우 터미널을 따로 쓰진 않아도 됨.

VS Code 에서 내가 생각하기에 가장 놀라운 부분이 일렉트론 기반이면서 입력 지연 시간이 길지 않다는 것. 리눅스 로컬에서 vim쓰는 수준까진 아니어도 불쾌한 느낌이 들 정도는 아님. 그리고 원격 연결인 경우 원격 저장하는 지연 시간을 VS Code 가 숨겨서 jitter영향이 굉장히 적다. 원격인 경우에는 어지간히 지연 시간 짧은 서버가 아니라면 Mosh + vim보다 jitter가 작음 (혹은 작아 보임).

VS Code의 설정은 유저 수준 / 각각의 원격 서버 수준 / 개별 작업 디렉터리 루트 수준에서 지정할 수 있고 이 설정들을 cascade해서 처리한다. 그래서 어지간한 설정은 주요 단말 (내 경우엔 맥북과 데스크톱)에 이 디렉터리만 동기화하면 됨. 개별 서버의 차이는 해당 서버 수준 설정에서 처리하면 되고. Vim은 각 서버에 .vim을 동기화하려고는 하는데, 서버별 차이를 지정할 편한 방법을 모르겠음. 쉘은 개별 설정을 포기하고 fish를 기본 상태로 사용하는 상태고…

이전부터 macOS 위에서 개발 IDE만 돌리고 빌드/테스트/디버깅은 CPU/메모리가 많은 서버에서 하는 쪽을 어떻게 해볼까 했는데, 이젠이게 가능해진 듯 하다. 이전에 시도했던 CLion 혹은 VS Code (원격 지원 없이) 로 로컬 빌드 (docker + docker exec ...)는 원격 지원이 없는 반쪽짜리라 느리디 느린 MacBook (2015년 형)에서 한다고 버티기가 어려웠다. 주로 작업하는 프로젝트에서 풀빌드하면 40분쯤 걸림 (더불어 배터리가 남아나질 않는다). 반대로 내 작업머신인 리눅스 서버 쪽에서 풀빌드하면 2분 정도라 macOS에서 편집하고 빌드는 리눅스에서 하는 지금 작업 환경은 꽤 만족스럽다.

VS Code Server 쪽의 라이센스가 좀 특이해서, 이걸 VS Code와 통신하지 않고 무언가 하는건 허용되진 않더라. 그래서 이걸 이용해서 VS Code 없이 무언가 하는 제품을 만들겠다면 쓸모가 없겠지만, 원격 개발 환경이나 이걸 확장하는 무언가를 만드는 정도라면 꽤나 적당한 도구라는게 내 생각.

덤: VS Code 를 _MS Windows_에서 띄운 경우에도 적어도 C++ / C# (mono) 개발 환경은 잘 돌더라. 회사에서 외부 강연할 용도로 준비하면서 여기까지는 확인.