Vim 화면 분할 및 고급 탐색 기법

분할 화면으로 Vim 실행

여러 파일을 동시에 편집할 때 터미널을 여러 개 띄우는 대신 Vim 내부에서 화면을 분할할 수 있습니다.

# 수직 분할 (좌우 배치)
vim -On 파일1 파일2 ...

# 수평 분할 (상하 배치)  
vim -on 파일1 파일2 ...

여기서 n은 분할할 창의 개수를 의미합니다.

창 닫기

단축키동작
Ctrl+W c현재 창만 닫기
Ctrl+W q현재 창 닫기 (마지막 창이면 Vim 종료)

동적 화면 분할

실행 중인 Vim에서 화면을 나누는 방법입니다.

" 현재 파일을 상하로 분할
Ctrl+W s

" 새 파일을 상하 분할하여 열기
:sp 파일명

" 현재 파일을 좌우로 분할  
Ctrl+W v

" 새 파일을 좌우 분할하여 열기
:vsp 파일명

창 간 커서 이동

Ctrl+W를 누른 후 방향키를 입력합니다. Vim의 기본 이동키 h, j, k, l를 활용합니다.

Ctrl+W h  " 왼쪽 창으로
Ctrl+W l  " 오른쪽 창으로
Ctrl+W k  " 위쪽 창으로
Ctrl+W j  " 아래쪽 창으로
Ctrl+W w  " 순환하여 다음 창으로

창 위치 재배치

대문자 방향키를 사용하여 창의 물리적 위치를 변경합니다.

Ctrl+W H  " 현재 창을 쪽으로 이동
Ctrl+W L  " 현재 창을 오른쪽으로 이동
Ctrl+W K  " 현재 창을 위쪽으로 이동
Ctrl+W J  " 현재 창을 아래쪽으로 이동

창 크기 조절

Ctrl+W =    " 모든 창 크기 균등하게
Ctrl+W +    " 현재 창 높이 증가
Ctrl+W -    " 현재 창 높이 감소
Ctrl+W >    " 현재 창 너비 증가
Ctrl+W <    " 현재 창 너비 감소

파일 시스템 탐색

디렉토리를 직접 열어 파일을 탐색할 수 있습니다.

:E          " 파일 탐색기 열기 (:Explore)
:He         " 하단에 탐색기 분할
:He!        " 상단에 탐색기 분할
:Ve         " 좌측에 탐색기 분할
:Ve!        " 우측에 탐색기 분할

탐색기 내에서 j, k로 이동하고 Enter로 디렉토리 진입 또는 파일 열기가 가능합니다.

버퍼 관리

열린 파일들은 버퍼에 보관됩니다.

:ls                    " 버퍼 목록 확인
:b 4                   " 4번 버퍼로 전환
:b 파일명              " 해당 파일명의 버퍼로 전환
:bn                    " 다음 버퍼 (:bnext)
:bp                    " 이전 버퍼 (:bprevious)
:bf                    " 첫 번째 버퍼 (:bfirst)
:bl                    " 마지막 버퍼 (:blast)

버퍼 상태 표시 기호:

  • % 현재 표시 중인 버퍼
  • a 활성화된 버퍼
  • h 숨겨진 버퍼
  • # 대체 버퍼
  • = 읽기 전용
  • + 수정된 버퍼

탭 페이지 활용

브라우저 탭처럼 여러 작업 공간을 분리할 수 있습니다.

:Te                    " 새 탭으로 탐색기 열기 (:Texplore)
:tabnew 파일명         " 새 탭으로 파일 열기
:tabs                  " 탭 목록 확인
:tabclose              " 현재 탭 닫기
:tabm 2                " 현재 탭을 2번 위치로 이동

탭 간 이동:

gt                     " 다음 탭
gT                     " 이전 탭
5gt                    " 5번 탭으로 직접 이동

터미널에서 탭으로 여러 파일 열기:

vim -p *.cpp           " 모든 cpp 파일을 탭으로 열기

기존 버퍼를 모두 탭으로 변환:

:bufdo tab split

창 동기화 스크롤

분할된 창들을 함께 움직이게 설정할 수 있습니다.

:set scrollbind        " 현재 창 동기화 활성화
:set scb!              " 동기화 비활성화

작업 세션 저장

현재 열린 파일, 탭, 창 배치 등을 저장하고 복원할 수 있습니다.

:mksession ~/.my_session.vim    " 세션 저장
:mksession! ~/.my_session.vim   " 덮어쓰기 저장

세션 불러오기:

vim -S ~/.my_session.vim

일괄 종료:

:qa                    " 모든 창 종료 (quit all)
:wqa                   " 저장 후 모두 종료 (write quit all)

Quickfix 목록 활용

컴파일 오류나 검색 결과를 체계적으로 관리합니다.

:make                  " Makefile 실행
:cw                    " 오류 목록 창 열기
:cn                    " 다음 오류로 이동
:cp                    " 이전 오류로 이동
:cl                    " 오류 목록 전체 보기
:cc                    " 현재 오류 상세 정보

프로젝트 내 검색:

:grep -r --include="*.[ch]" 검색어 src/
:cw                    " 검색 결과를 quickfix 창으로 표시

자동 완성 기능

Insert 모드에서 다양한 자동 완성을 사용할 수 있습니다.

Ctrl+N                 " 키워드 순방향 검색 완성
Ctrl+P                 " 워드 역방향 검색 완성

Ctrl+X 서브모드:

Ctrl+X Ctrl+D          " 매크로 정의 완성
Ctrl+X Ctrl+]          " 태그 완성
Ctrl+X Ctrl+F          " 파일명 완성
Ctrl+X Ctrl+I          " 키워드 및 포함 파일 표시
Ctrl+X Ctrl+L          " 전체 라인 완성

텍스트 변환

guu  또는 Vu           " 현재 행 소문자 변환
gUU  또는 VU           " 현재 행 대문자 변환
v로 선택 후 u/U        " 선택 영역 소문자/대문자 변환

유틸리티 명령

ga                     " 커서 위치 문자의 ASCII 코드 표시
g8                     " UTF-8 인코딩 바이트 표시
gf                     " 커서 아래 파일 경로 열기
*  또는 #              " 현재 단어로 파일 내 검색

들여쓰기 제어

>>                     " 현재 행 오른쪽 들여쓰기
<<                     " 현재 행 왼쪽 들여쓰기
==                     " 현재 행 자동 정렬
=%                     " 괄호 블록 전체 정렬 (커서가 괄호 위치)
gg=G                   " 전체 파일 자동 들여쓰기

복사 및 붙여넣기

v로 선택 후 y          " 복사 (yank)
v로 선택 후 d          " 삭제 (잘라내기)
p                      " 커서 뒤에 붙여넣기
P                      " 커서 앞에 붙여넣기
yy                     " 현재 행 복사
5yy                    " 5행 복사
dd                     " 현재 행 삭제 (잘라내기)

커서 이동 히스토리

Ctrl+O                 " 이전 위치로 되돌아가기
Ctrl+I                 " 앞으로 이동하기

셸 명령 결과 삽입

:r!date                " 현재 날짜 삽입
:r!ls -la              " 디렉토리 목록 삽입

위 명령에서 :r:read의 축약형이며, !는 셸 명령 실행을 의미합니다.

태그: vim neovim cli editor window-management

5월 23일 08:30에 게시됨