Claude Code 작업 중에 "잠깐 이 파일 보고 싶다·고치고 싶다"는 생각이 들면 어떻게 하고 있어?
목차
Claude Code로 작업하다 보면 "이 파일 내용을 잠깐 확인하고 싶다"는 순간이 자주 찾아옵니다. cat이나 less로 빠르게 볼 수도 있지만, 신택스 하이라이트와 함께 제대로 읽고 싶을 때도 있죠.
VS Code나 Cursor를 열면 해결되는 이야기이긴 하지만, 여러 프로젝트에서 IDE를 띄워두면 메모리 소비가 서서히 쌓여갑니다. "파일을 잠깐 보고 싶을 뿐인데, 그것만을 위해 IDE를 실행하기엔 너무 무겁다"고 느끼는 순간, 있지 않으신가요?
이 글에서는 터미널 안에서 완결되는 두 가지 해결책을 소개합니다.
- 열람만 하고 싶다면
bat:cat의 강화판. 신택스 하이라이트가 적용되며, 마우스 선택도 자연스럽게 동작합니다 - 편집도 고려한다면 Neovim: 신택스 하이라이트와 함께 파일을 열면서, 필요하다면 수정도 가능한 경량 에디터
참고로 제가 사용하는 터미널은 Ghostty입니다. 간편하게 화면 분할이 가능하고 가벼워서 애용하고 있습니다. 한쪽 패인에서 Claude Code를 실행하면서, 다른 쪽에서 bat이나 Neovim으로 파일을 확인하는 방식이 매우 편리합니다.
가장 심플한 선택지: cat / less / tail
bat 이야기로 들어가기 전에, 기본으로 설치되어 있는 커맨드에 대해서도 짚어보겠습니다. "신택스 하이라이트는 필요 없고 내용만 보고 싶다"는 경우에는 이것으로 충분합니다.
# 파일 전체를 그대로 출력
cat src/index.ts
# 스크롤하면서 읽고 싶을 때
less src/index.ts
# 끝부분만 확인하고 싶을 때
tail -20 src/index.ts
less는 스페이스 키로 한 화면씩 스크롤하고, q로 종료합니다. 검색은 / 뒤에 키워드를 입력하면 됩니다.
다만, 이 커맨드들에는 신택스 하이라이트가 없습니다. 코드를 읽을 때 색상이 없으면 은근히 힘든 법입니다.
열람의 결정판: bat
bat은 cat의 클론으로, 신택스 하이라이트와 페이징(less 상당)을 처음부터 갖추고 있습니다. Rust로 만들어진 모던 CLI 툴의 대표 격으로, cat을 대체하는 정석으로 널리 사용되고 있습니다.
설치는 Homebrew로 한 번에 됩니다.
brew install bat
사용법은 cat과 거의 동일합니다.
bat src/index.ts
긴 파일이라면 자동으로 페이징 모드로 전환되며, less와 마찬가지로 스페이스 키로 스크롤하고 q로 종료합니다. 짧은 파일이라면 페이저를 거치지 않고 cat처럼 바로 출력해주므로, cat의 상위 호환으로 사용할 수 있습니다.
마우스 조작은 어떻게 되나
bat(내부적으로 less를 사용합니다)은 마우스 이벤트를 캡처하지 않습니다. 따라서 터미널 측에서 평소대로 마우스 선택을 처리해줍니다. 드래그 선택 → Command+C가 그대로 동작합니다. 나중에 소개할 Neovim처럼 수식 키를 외울 필요가 없습니다.
마우스 휠 스크롤도 Ghostty라면 현재 표시 중인 페이지가 그대로 스크롤되므로, 별도 설정 없이 편리하게 사용할 수 있습니다.
cat 대체로 상시 사용한다면
bat을 cat 감각으로 사용하고 싶다면, 별칭(alias)을 설정하는 것이 정석인 것 같습니다.
alias cat='bat --plain --paging=never'
--plain은 장식(줄 번호나 그리드)을 생략하는 옵션, --paging=never는 짧은 파일도 페이저를 거치지 않고 바로 출력하는 옵션입니다. 이렇게 하면 cat과 같은 감각으로 사용하면서 신택스 하이라이트의 혜택을 누릴 수 있습니다.
다만, 저는 별칭을 설정하지 않았습니다. 셸 스크립트에서 cat을 사용할 때와 동작을 맞춰두고 싶다는 점, 그리고 신택스 하이라이트와 함께 보고 싶을 때만 의식적으로 bat을 입력하는 편이 목적이 명확해지기 때문입니다.
편집도 고려한다면 Neovim
bat은 열람 전용 툴입니다. "읽고 나서 조금 수정하고 싶다"는 상황에서는 에디터의 차례입니다. 여기서부터는 Neovim을 설정하는 절차를 소개합니다. Vim 계열 에디터를 사용해본 적이 없어도 괜찮습니다.
왜 Vim이 아닌 Neovim인가
터미널에서 동작하는 에디터라고 하면 Vim이 떠오르지만, 이 글에서는 Neovim을 사용합니다. Neovim은 Vim을 포크한 프로젝트로, 기본적인 조작은 Vim과 동일합니다. 그렇다면 무엇이 다르냐 하면, 설정 없이도 처음부터 사용 가능한 범위가 크게 다릅니다.
순수한 Vim으로 같은 작업을 하려면, 신택스 하이라이트 활성화, autoread 설정, 줄 번호 표시, 백스페이스 동작 수정 등 "일단 이것부터 작성해야 한다"는 설정이 꽤 있습니다. Neovim은 이것들이 기본값으로 활성화되어 있어, 최소한의 설정으로 원하는 환경에 도달할 수 있습니다.
Vim 헤비 유저라면 같은 설정을 .vimrc에 작성해 동일한 환경을 만들 수 있습니다. 다만, 저 자신은 Vim에 그렇게 익숙하지 않아서, 기본값만으로도 실용적으로 사용할 수 있는 Neovim이 더 편했습니다. 이제 시작하는 분이라면 Neovim이 더 접근하기 쉽다고 생각합니다.
Neovim 설치와 실행
macOS라면 Homebrew로 한 번에 됩니다.
brew install neovim
Ubuntu 계열의 경우는 이쪽입니다.
sudo apt install neovim
설치가 됐는지 확인해봅시다.
nvim --version
파일을 열 때는 nvim 파일명으로 실행합니다.
nvim src/index.ts
먼저 알아두어야 할 '모드'의 개념
Neovim을 처음 접하면, 키를 눌러도 문자가 입력되지 않아 당황할 수 있습니다. 이는 Neovim이 '모드'라는 구조를 가지고 있기 때문입니다. 실행 직후에는 노멀 모드가 되어 있어, 키 입력이 모두 '조작 커맨드'로 해석됩니다.
기억해두어야 할 모드는 3가지뿐입니다.
| 키 | 모드 | 용도 |
|---|---|---|
| (실행 직후) | 노멀 모드 | 커서 이동, 커맨드 실행 |
i | 인서트 모드 | 문자 입력·편집 |
v / V | 비주얼 모드 | 범위 선택 (v는 문자 단위, V는 줄 단위) |
어떤 모드에서든 Esc를 누르면 노멀 모드로 돌아올 수 있습니다. 헷갈리면 Esc를 2번 누르는 것, 이것만 기억해두면 길을 잃지 않습니다. 화면 하단의 상태 표시줄에 -- INSERT --나 -- VISUAL --이 표시되므로, 지금 어떤 모드에 있는지 한눈에 알 수 있습니다.
저장과 종료
노멀 모드에서 :를 입력하면 커맨드 입력창이 나타납니다. 최소한 이것만 기억해두세요.
| 커맨드 | 동작 |
|---|---|
:w | 저장 |
:q | 종료 |
:wq | 저장하고 종료 |
:q! | 저장하지 않고 강제 종료 |
"닫는 방법을 몰라서 못 닫겠다"는 Vim의 흔한 경험담이지만, :q!만 알고 있으면 탈출할 수 있습니다.
Claude Code의 편집을 자동 리로드하는 설정
Neovim으로 파일을 열어둔 채로, 옆 패인에서 Claude Code에 작업을 시키는 경우도 있을 것입니다. Claude Code가 파일을 수정했을 때 자동으로 다시 읽어주도록 설정해두면 편리합니다.
설정 파일은 ~/.config/nvim/init.vim입니다. 아직 존재하지 않는 경우에는 디렉터리째 생성해주세요.
mkdir -p ~/.config/nvim
nvim ~/.config/nvim/init.vim
다음 내용을 작성합니다.
set autoread
set number
syntax on
au CursorHold,CursorHoldI * checktime
au FocusGained,BufEnter * checktime
autoread는 Neovim에서 기본값으로 활성화되어 있지만, 의도를 명시하기 위해 여기서는 작성해둡니다. 다만 autoread만으로는 셸 커맨드 실행 후나 포커스 복귀 시 등 제한된 타이밍에서만 재읽기가 실행됩니다. au CursorHold와 au FocusGained 두 줄을 추가함으로써, 커서가 일정 시간 정지했을 때나 윈도우에 포커스가 돌아왔을 때도 checktime(외부 변경 확인)이 실행되게 됩니다.
이 설정을 넣은 상태에서 Neovim에 파일을 열어두면, 옆 패인에서 Claude Code가 편집할 때마다 내용이 업데이트되는 모습을 볼 수 있습니다.
복사&붙여넣기의 방식
Neovim에서 편집도 하고 싶어졌다면, 복사&붙여넣기의 구조를 이해해둘 필요가 있습니다. Vim의 세계에서는 독특한 용어가 사용됩니다.
- 복사를 **얀크(yank)**라고 부른다
- 잘라내기라는 개념은 없으며, 삭제(delete)하면 그 내용이 자동으로 레지스터에 들어간다
즉 "삭제 = 잘라내기"입니다. 이 발상의 전환이 처음의 허들일 수 있습니다.
기본 조작 (노멀 모드)
| 키 | 동작 |
|---|---|
yy | 현재 줄 복사 |
dd | 현재 줄 잘라내기 (삭제하여 레지스터로) |
| ` |