오랜만에 글을 끄적여본다
요즘에는 Visual Studio Code 나 Atom 텍스트 에디터, 혹은 이전에 잠깐 사용했던 Sublime Text 등을 사용하지 않는다. 여러 이유가 있지만 가장 큰 이유는 내가 13인치 맥북을 사용하고 있기 때문이다. 그게 무슨 뜻이냐면... 화면이 작다... 그래서 사실상 VS Code 도 Zen 모드로 개발을 했었지만 처음에는 편했던 부분들이 익숙해지니 불편함으로 다가왔다.
Visual Studio Code
유명한 '마' 사의 프로그램이다. 사실 VS Code는 예상과 달리 IDE 가 아니다... 적어도 내가 이해한 바로는 그렇지 않다. IDE 란 Integrated Developing Environment의 약자로 개발부터 디버깅, 테스트 등, 다양한 기능이 한 곳에 몰려있는 환경을 뜻한다.
보통은 다음과 같이 최소 세 개 이상의 기능이 있다:
- Source Code Editor
- Build Automation Tools
- Debugging
어쨌든 간에 IDE 는 아니라고 하지만 실제로 extension 들은 엄청나다. 거의 못 찾는 게 없을 정도로 인기가 많고 활발한 커뮤니티, '마' 사의 적극적 지원 등으로 현재로서는 꽤 지지도가 높다.
내가 사용했던 몇가지 기능들은 커스텀 시계, linting 도구, 마크다운 미리 보기, SQL 도구, Prettier, TODO Highlight 등이 있다. SQL 도구와 같은 경우에는 VS Code에서도 데이터베이스랑 연결되는 부분이 있는데 개인 취향으로 생각해주면 좋을 것 같다.
뭐... 굳이 기능적인 측면을 보지 않더라도 꽤 예쁜 테마들이 여러 개 존재한다. 나는 Atom 을 사용했어서 관련 테마 등을 주로 찾았지만 Material 테마도 괜찮았던 것으로 기억이 난다. 물론 파일 아이콘들도 여러 선택지가 있으니 시각적인 측면에서는 매우 좋은 점수를 받아야 한다고 생각한다.
코드를 작성하고 싶은데 여러가지 다양한 기능들을 원하고 적극적인 지원과 활발한 커뮤니티, 이미 차려진 뷔페를 맛보고 싶다면 VS Code를 추천한다.
Atom Text Editor
내가 접한 에디터 중에 뭐가 가장 깔끔한지 물어본다면 아톰이다. 잘 모르는 사람들이 있지만 아톰 또한 '마' 사의 제품이다. 여기에 대해서는 더 하고 싶은 말이 있지만 일단 나중에 언급하겠다.
아톰은 내게 테마의 아름다움을 보여준 에디터 중 하나이면서 인터페이스의 간결함을 동시에 선보인 에디터였다. 지극히 개인적인 의견이겠지만 당연히, 나는 아톰을 꽤나 좋아했다. 군더더기 하나 없는 듯한 파일 탐색기, 보기 편한 글씨와 색상, 나름 빨랐던 프로그램의 응답 시간 등. 시각에 더 끌려 빠르게 느꼈다고 생각했을지도...
아무튼 간에 아톰은 색다른 세상이었다. 코드를 작성할 때 필요했던 기능 또한 VS Code 못지않게 꽤나 있었다. 전체 화면으로 봤을 때에는 Zen 모드가 없어서 나름 아쉬워했지만 그 외에는 터미널, 자체적으로 지원되는 깃 연동 등 끝내주었다. 깃 같은 경우에는 아톰에서 따로 탭을 지원한다. 우측에 바가 열려 접할 수 있는데 단축키도 있어 손쉽게 접근할 수 있다.
이전에 작성했던 아톰의 기능들, extension 관련된 글을 읽으면 얼마나 atom 의 광팬이었는지 알 수 있을 거다.
물론 몇가지 단점들이 존재한다. 파일들이 많아지고 작업하는 시간이 길어질수록 나만 그런지 모르겠지만 가끔가다 렉이 걸려 프로그램을 재시작해야 하는 경우도 있고 램을 너무 잡아먹어서 16기가 램으로 작업을 해도 주의했어야 할 때도 있었다. (물론, 브라우저 등 여러 프로그램들을 동시에 돌리고 있었지만). 실제로 차지하는 메모리가 은근히 커서 놀란 적도 있다.
기능 또한 제한적이다. 이미 언급했지만 '마' 사의 제품으로서 VS Code 와 직접적/간접적인 경쟁 구도이다. 아톰을 사용하는 커뮤니티에서는 '마' 사가 아톰을 언젠가는 버리고 VS Code 만 적극 지원할 거라는 음모론이 존재하기도 하는데 아니라고 하기에는 지원의 차이가 크다... 아무튼, 지원과 더불어 커뮤니티 또한 작다. VS Code 가 뷔페라고 한다면 Atom 은 단골 식당이다... 취향이라고 생각하지만 어쨌든 부인할 수 없는 사실은 지원조차가 다르다는 것...!
그렇다고 아톰이 죽었다고 하기에는 너무 이르다. 여전히 아톰의 디자인, 간결함 등의 매력에 빠진 사람들이 많으니 한번 사용해보고 마음에 들면 충분히 뛰어들어도 좋다.
Vim
이제는 내가 현재 사용하고 있는... 그렇다 개발이나 업무나 뭘하든지 사용하고 있는 텍스트 에디터로 넘어왔다. 일단 Vim의 로고를 자세히 살펴보면 뭔가 구렸다. 구리다는 표현은 즉, 낡았다(?)라는 뜻이다. 저 두툼한 선들, 투박한 색 등... 사실 Vim 은 1991년에 대중에게 공개되었다. 내년, 2021년이면 30주년이다. 그렇다면 왜 사람들은 Vim을 사용하고 나 또한 그들과 함께 사용하게 되었을까? 심지어 Vim 은 리얼 텍스트 편집기다. 그 이상도 아니고 오히려 그 이하다. VS Code, Atom과 비교한다면 죽었어야 한다. 하지만 버젓이 살아있고 고대 유물이 아닌 아직까지도 사람들이 사용하고 있는 텍스트 편집기이다.
그렇다면 무엇이 이들을 여기로 모이게 한 것일까?
바로 Vim 은 하나의 다른 세상이기 때문이다. 마우스가 없던 시절이 있었다. 그저 키보드로만 두드리는 시대가 있었다. 물론 오래전 얘기라고 넘어갈 수도 있지만 사실상 길어봤다 반세기다. 애초에 컴퓨터의 역사가 그리 길지 않기 때문이다. 그 때 나왔던 텍스트 에디터가 Vi라는 고대 유물이다. 얘는 거의 죽음. 이 텍스트 에디터는 나쁘지 않았다. 제 기능을 했고 제 기능이란 그저 텍스트를 쓰는 거였다. 여기에서는 Vi 로 시간을 버리고 싶지 않기 때문에 넘어가겠다. Vim 은 어렵지 않다. 기존에 존재하던 Vi를 변형한 것이다. 훨씬 멋있게. 뭐가 멋있냐면 키보드만으로 손쉬운 탐색, 편집, 복사 등 수많은 기능들을 작동시킨다.
개인적으로는 컴퓨터 계의 GMO 가 있다면 Vim 이 아닐까 고민한다. 화살표 키는 H, J, K, L, 로 대체된다. 복사는 y, 변경은 c, 삭제는 d, 선택은 v, 등 기본 키들과 수많은 옵션 키들의 조합으로 하나의 행동을 할 때에 수많은 방법이 존재한다. 간단한 예시를 들어보자
function helloWorld() {
console.log('hello world')
}
위와 같은 코드가 있다고 가정하고 현재 커서가 1번 줄에 있다고 생각하자. 코드의 맨 마지막 줄에 가고 싶을 때에 보통 어떻게 하는가?
- 화살표 아래 키 누르기
- 키보드가 page end 키 등이 있으면 누른다
- 맥이라면 command + 화살표 키도 누를 수 있다
보통 이러한 방법들을 사용한다. 설마 마우스를 이용해서 스크롤을 내리지는 않겠지? Vim 에서도 마찬가지로 여러 가지 방법이 존재한다.
- j 키를 이용해 탐색
- G
'G' 라고? j는 화살표로 치면 아래 키니까 이해는 가지만 G는 뭘까? 말 그대로 대문자 G이다. 현 파일의 맨 마지막 줄로 내려간다. 그렇다면 맨 위로 다시 가고 싶을 때에는? 'gg'를 누르면 된다. 얼마나 간편한가.
이번에는 같은 코드에서 커서가 'hello world' 의 첫 번째 따옴표에 위치한다고 생각해보자. 'hello world'가 아닌 'goodbye world'로 바꾸고 싶으면 어떻게 할까? 일반적으로 hello를 지우고 다시 작성을 한다. Delete 든 Backspace 든 간에 결국에는 지우고 한다. 아니면 Shift를 이용해 단어를 선택할 수도 있고 Shift + Alt로 단어를 한 번에 선택할 수도 있다. 하지만 결국에는 키를 여러 번 눌러야 한다. 그렇다면 Vim 은 어떻게 하는가?
간단하다. 'hello world' 의 'h'에 커서를 위치하고 'cw'를 누르면 된다. 여기서 'c'는 이미 변경할 때 사용한다고 설명했다. 그러면 'w'는 무엇인가? 그렇다. Vim 은 여러 가지 '모드' 들이 존재한다. Visual Mode, Insert Mode, Normal Mode 등이 존재한다. 보통은 Normal Mode 인 상태인데 다른 작업을 하고 싶으면 해당 작업, 지금은 변경하고 싶으니 'c'를 누르고 'w' (word)를 눌러 단어를 변경한다. 그렇다면 바로 입력할 수 있는 상태가 된다.
이외에도 많은 기능들이 존재하지만 가장 중요한 부분은 마우스가 필요가 없다는 점이다. 익숙해지는 순간 오히려 마우스가 방해가 된다고 느껴진 것이다. 마우스와 키보드를 왔다갔다 하는 시간은 마우스가 얼마나 고퀄이든 간에 버리는 시간인 건 마찬가지다. 이것이 내가 VS Code, Atom 등에서 벗어난 궁극적인 이유이다. 파일 탐색기, 디버거 등 좋은 도구들은 많고 많지만 결국에는 코드에만 집중하고 싶고 사실상 디버거 툴 등을 대체할 수 있는 기능들, 방법들을 사용하게 된다면 Vim 또한 가능한 선택지가 된다.
이전에 Atom 은 단골 식당이라고 했다. 하지만 본인만 단골 식당이라고 해서 남들이 안 오지 않지는 않는다. 유명한 단골 식당일 수록 사람들이 많을 거다. Vim 은 극단적인 단골 식당이다. 산골짜기, 혹은 저 멀리 거의 아무도 모르고 잘 들어보지도 못한 거리 어딘가에 위치한, 아는 사람들만 계속 가게 되는 그런 곳이다. 가는 길이 쉽지는 않을 것이다. 길을 헤매고 지도에는 안 보일 수도 있고 식당 영업시간이 비 규칙적일 수도 있다. 다만 확실한 것은 여기가 아니면 안 된다라는 마인드가 있다면. 도전 의식과 마우스의 불편함을 느낀다면 뛰어드는 것을 추천한다.
오늘은 간단하게 내가 사용했던 코드 편집기들을 몇 개 살펴봤다. 할 말은 많기에 다음에 아마 더 적을거다. 특히 Vim 은 지금 Neovim을 사용하고 있기 때문에 그 차이 또한 언급하는 것이 좋을 것 같다. (간단히는 기능 업그레이드 + 비동기 지원). 아무튼, 본인이 개발할 때 화면을 계속 볼 텐데, 알맞은 화면을 볼 수 있도록 조절하는 것이 매우 중요하다고 생각한다.
'Tools' 카테고리의 다른 글
k3s 라즈베리파이 클러스터 ArgoCD 설치 (0) | 2023.10.12 |
---|---|
유용한 Vim Plugins (0) | 2022.06.01 |
Intro to Scrapy (0) | 2022.06.01 |
iTerm과의 고군분투쓰 (0) | 2022.05.31 |
Atom text-editor (0) | 2022.05.30 |