Home vi 문서 편집
Post
Cancel

vi 문서 편집

개요

  • 서버 설정 파일(nginx.conf, yaml, env 등)을 수정할 일이 매우 많을 경우 키보드만으로 모든 편집을 처리할 수 있는 vi/vim 사용 방법을 정리함



3가지 vi/vim 모드

  • vi/vim은 모드 기반 편집기임
  • 현재 무슨 모드인지 모르면 입력이 안 되거나 엉뚱한 게 지워질 수 있음

  • Normal Mode (일반 모드)
    • 파일을 열면 기본적으로 이 상태임
    • 이동, 삭제, 복사, 붙여넣기 등 명령어를 수행함
    • Esc를 누르면 항상 이 모드로 돌아옴
  • Insert Mode (입력 모드)
    • 텍스트를 실제로 타이핑하는 모드임
    • i, a, o 등을 누르면 진입함
  • Command-Line Mode (명령행 모드)
    • 저장, 종료, 검색/치환 등을 수행함
    • :(콜론)을 누르면 화면 하단에 입력창이 생김



필수 명령어

입력 모드로 전환

설명
i 커서 에 입력 (Insert)
a 커서 에 입력 (Append)
o 커서 아래에 새 줄 만들고 입력 (Open line)
Shift + i (I) 줄의 맨 앞에서 입력
Shift + a (A) 줄의 맨 뒤에서 입력
Shift + o (O) 커서 에 새 줄 만들고 입력

이동 - 방향키 대신 사용

설명
h j k l 좌, 하, 상, 우 (왼손: h, 오른손: l, 아래: j, 위: k)
w 다음 단어의 첫 글자로 이동 (Word)
b 이전 단어의 첫 글자로 이동 (Back)
0 (숫자 0) 줄의 맨 앞으로 이동
Shift + 6 (^) 줄의 맨 앞 (공백 제외)으로 이동 - 들여쓰기된 파일에서 유용
Shift + 4 ($) 줄의 맨 뒤로 이동
gg 파일의 맨 첫 줄로 이동
Shift + g (G) 파일의 맨 끝 줄로 이동
:숫자 해당 라인 번호로 이동 (:50 → 50번째 줄로)

편집

설명
x 커서가 있는 글자 삭제 (Delete char)
dd 현재 줄 삭제 (잘라내기)
숫자 + dd 숫자만큼 줄 삭제 (5dd → 5줄 삭제)
yy 현재 줄 복사 (Yank)
p 커서 아래에 붙여넣기 (Paste)
Shift + p (P) 커서 위에 붙여넣기
u 실행 취소 (Undo)
Ctrl + r 실행 취소의 취소 (Redo)

저장 및 종료

설명
:w 저장 (Write)
:q 종료 (Quit)
:wq 저장하고 종료
:q! 저장하지 않고 강제 종료



알아두면 유용한 단축키

환경 설정

  • 줄 번호 표시
    • :set nu (현재 세션에 적용)

검색 및 치환

  • 설정 파일에서 IP 주소나 포트를 일괄 변경할 때 유용함

  • 검색 (Normal Mode)
    • /검색어 입력 후 엔터
    • n
      • 다음 찾기 (/ 검색 기준으로 아래 방향)
    • Shift + n (N)
      • 이전 찾기 (/ 검색 기준으로 위 방향)
  • 일괄 치환 (Command-Line Mode)
    • 문법
      • :%s/찾을단어/바꿀단어/g
    • ex)
      • 문서 전체의 ‘8080’을 ‘80’으로 변경
        1
        
        :%s/8080/80/g
        
      • 확인하면서 변경하고 싶다면 끝에 c 추가 (gc)

파일 내용 전체 지우기

1
ggdG
  • gg
    • 맨 위로 이동
  • d
    • 삭제 명령 시작
  • G
    • 맨 아래까지 (처음부터 끝까지 삭제)

화면 분할

  • 로그 파일 두 개를 동시에 비교할 때 좋음
  • 명령어
    • :sp [파일명]
      • 가로 분할
    • :vsp [파일명]
      • 세로 분할
  • 창 이동
    • Ctrl + w 누르고 방향키 (h, j, k, l)로 이동

다중 행 편집 (Visual Block)

  • 여러 줄을 동시에 주석 처리하거나 지울 때 유용함
  • YAML, 설정 파일에서 특히 유용함

사용 방법:

  1. Ctrl + v로 Visual Block 모드 진입
  2. 방향키 (j, k) 또는 h, l로 영역 선택
  3. 다음 중 하나 수행:
    • 입력
      • Shift + i (I) 후 문자 입력 (예: #) → Esc 두 번 누르면 일괄 적용
    • 삭제
      • d 또는 x로 선택 영역 삭제
    • 변경
      • c로 변경 후 새 내용 입력

예시

  • 여러 줄 주석 처리 ```vim

    Before

    server_port: 8080 server_host: localhost server_timeout: 30

Ctrl+v → 3줄 선택 → I → # 입력 → Esc 두 번

After

server_port: 8080

server_host: localhost

server_timeout: 30

```



정리

  • Normal, Insert, Command 3가지 모드를 확실히 구분해야 함
  • 방향키 대신 h, j, k, l 사용에 익숙해지면 속도가 훨씬 빨라짐
  • Visual Block (Ctrl + v)은 설정 파일 대량 수정 시 필수 기능임



Reference

Contents