코드 하이라이트, 정말 필요한가? 내가 신경 쓰는 만큼만 강조하기

Highlighting My Code Based on How Much I Care

Nikita Prokopov의 '모두가 신택스 하이라이팅을 잘못하고 있다'는 글을 읽고, 저자는 기본 VSCode Dark Theme에 익숙해져 하이라이팅의 기능을 잊고 있었음을 깨닫습니다. 색상 수를 줄인 라이트 테마를 직접 만들어 보려다 어려움을 겪고, '왜 코드를 하이라이팅해야 하는가'라는 근본적인 질문으로 이어집니다. 결국 색상 대신 명암(그레이스케일)만으로 주석, 정의, 제어 흐름 등 '정말 중요한 부분'만 강조하는 방식과, 클릭 시 동일 단어/범위를 강조하는 동적 하이라이팅을 제안합니다.

코드에서 색상 대신 명암만으로 강조한다면, 눈이 가장 중요한 부분 사이를 건너뛰어 의미론적 부분에 집중하고 순수 문법적 부분은 훑어 지나갈 수 있을 것입니다.
  1. nrabulinski

    > 클래스 이름에 어떤 색을 쓰는지 기억나세요?

    저는 이 글과 인용된 글의 요점에 전반적으로 동의하지만, 이런 사실을 능동적으로 기억할 수 있어야 한다는 전제에는 동의하지 않습니다. 제가 개인적으로 사용하는 테마는 꽤 차분한 편이지만, 변수, 키워드, 인자, 타입 이름, 그리고 몇몇 다른 토큰 클래스에 서로 다른 색을 사용합니다. 저는 코드에서 인자를 찾기 위해 "음, 인자는 무슨 색이지?"라고 의식적으로 생각하지 않습니다. 그냥 보입니다. 수년간 익혀서 이제는 근육 기억이 되었고, 코드를 읽는 데 도움이 됩니다. 마치 제 아파트 건물 비밀번호를 기억하지 못하지만 매일 여러 번 입력하는 것과 같습니다.

  2. wzdd

    이런 하이라이트 재고 글들은 항상 잘못된 전제에서 시작합니다. 제 코드에서 클래스 이름의 색은 모든 클래스 이름이 가진 색입니다. 잠시 코드로 작업하다 보면 하나가 이상해 보이면 알아차릴 것입니다.

    뇌는 정말 효율적입니다. 문맥 없이 무작위로 회상하는 데 최적화하지 않습니다. 정말 그렇게 하려고 애쓰지 않는 한 말이죠. 그런 기억이 스킴의 효율성에 대해 말해주는 것은 없습니다.

  3. sph

    저는 모든 사람이 구문 하이라이트를 잘못 이해하고 있다고 확신하며, 이 글이 제 생각을 뒷받침합니다.

    제가 싫어하는 점:

    - 현대 편집기에서 유행하는 비의미적 무지개 똥 테마로 어떻게 생산적으로 일할 수 있는지 모르겠습니다. 저는 ADHD가 있어서 쓸모없는 정보로 과도하게 자극받는 것을 원하지 않습니다.

    - GitHub에서 Zig 코드를 볼 때마다 싫습니다. 거기 테마는 모든 것을 갈색으로 만드는데, 구조체 멤버라서 그렇다고 하더군요. 세상에, Zig에서는 모든 것이 구조체 멤버입니다. 소스 코드의 90%에 해당하는 것에 선명한 색을 할당하는 것은 어리석은 일입니다. 제 브라우저 기록에서 무작위 예: https://github.com/foxnne/aftersun/blob/main/src/time/enviro...

    - 어제 KDE의 KWrite 텍스트 편집기에서 Lisp 코드를 열었는데, 모든 기본 테마가 괄호를 굵은 글꼴과 선명한 색으로 강조해서 눈에 띄게 만듭니다. Lisp에서 괄호는 배경에 희미해져야지, 눈에 튀어나오면 안 됩니다. 완전히 사용할 수 없어서 구문 하이라이트를 꺼야 했습니다.

    항상 좋은, 최소한의, 차분한 색상 테마를 찾고 있습니다. 사용성과 편안함을 위해 테마를 디자인하는 진지한 디자이너가 있었으면 좋겠습니다. 색을 가지고 놀 자격이 없는 사람들이 아니라요.

    구문 하이라이트를 끄고 코드를 작성하던 동료가 생각납니다. 그때는 그게 괴짜 같은 선택이라고 생각했는데, 나이가 들수록 그의 지혜를 더 깨닫게 됩니다. 나쁜 구문 하이라이트보다는 없는 편이 낫습니다. 적어도 구조만으로 코드를 쉽게 파싱하려고 할 테니까요. (잘림)

  4. mattlondon

    음, 이건 제가 예상한 것과는 다르네요.

    복잡성/위험/중요성에 기반한 하이라이트일 거라고 생각했습니다. 그런데 그건 "왜 나는 그걸 생각 못 했지?!" 하는 순간이었는데, 실제로 그들도 그렇게 하지 않았습니다.

    그래서 IDE에서 반복 작업하는 동안 LLM 에이전트의 diff를 검토해야 하는 시나리오를 상상할 수 있습니다. diff는 인간 검토를 위해 중요성/복잡성에 따라 강조될 것입니다. getter나 setter 같은 사소한 것은 회색으로 표시되고, 매우 복잡하거나 까다롭거나 위험한 코드는 대비가 높은 굵은 색(중요도에 따라 밝기 척도가 있을 수도 있음)으로 강조될 것입니다. 그러면 에이전트의 diff를 검토할 때 가장 주의가 필요한 중요한 부분을 즉시 보고 집중할 수 있습니다.

    저는 그게 정말 유용할 것 같습니다.

  5. FridgeSeal

    제 함수나 구조체 구문의 색이 무엇인지 말할 수는 없지만, 코드를 볼 때 그 색의 존재 덕분에 그 순간 관심 있는 텍스트 부분으로 즉시 이동할 수 있다는 것은 말할 수 있습니다.

이 날의 다른 글

2026-08-31