분할 화면으로 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의 축약형이며, !는 셸 명령 실행을 의미합니다.