vi 편집기 (vi Editor) 📝

리눅스의 대표적인 터미널 기반 텍스트 편집기입니다. **명령 모드(Command Mode)**와 입력 모드(Insert Mode), **ex 모드(ex Mode)**를 오가며 사용합니다.

vi 실행 옵션

  • vi -R [파일]: 읽기 전용으로 파일을 엽니다.
  • vi -r [파일]: 비정상 종료 시 생성된 스왑 파일 목록을 확인하고 파일을 복구합니다.
  • vi +[숫자] [파일]: 지정한 숫자 행으로 이동하여 파일을 엽니다.
  • vi +/[문자열] [파일]: 파일 내에서 처음 발견되는 문자열로 커서를 이동하여 파일을 엽니다.
    • 예: vi +/ihd /etc/hosts

명령 모드 (Command Mode) 주요 키

파일을 열면 기본적으로 명령 모드로 시작합니다.

입력 모드로 전환

  • a: 현재 커서 (오른쪽)에서 입력 시작
  • A: 현재 행의 맨 뒤에서 입력 시작
  • i: 현재 커서 위치에서 입력 시작
  • I: 현재 행의 맨 앞에서 입력 시작
  • o: 현재 커서 아래에 새 행을 추가하고 입력 시작
  • O: 현재 커서 에 새 행을 추가하고 입력 시작

커서 이동

  • h, j, k, l: 왼쪽, 아래, 위, 오른쪽으로 한 칸씩 이동
  • w: 다음 단어의 시작으로 이동
  • e: 현재 단어의 끝으로 이동
  • ^ 또는 0: 현재 행의 맨 앞으로 이동
  • $: 현재 행의 맨 뒤로 이동
  • G: 파일의 마지막 행으로 이동
  • [숫자]G: 지정한 숫자 행으로 이동 (예: 10G 10번째 행으로)

삭제 (잘라내기)

  • x: 커서가 위치한 곳의 문자 하나를 삭제
  • dd: 커서가 위치한 행 전체를 삭제
  • dw: 커서 위치부터 오른쪽으로 한 단어 삭제

복사 및 붙여넣기

  • yy: 현재 커서가 위치한 행 전체를 복사
  • yw: 커서 위치부터 오른쪽으로 한 단어 복사
  • p: 복사하거나 삭제한 내용을 커서 아래에 붙여넣기
  • P: 복사하거나 삭제한 내용을 커서 에 붙여넣기

실행 취소 및 반복

  • u: 이전 명령을 취소 (Undo)
  • U: 현재 행에서 수행된 모든 변경 사항을 취소
  • .: 마지막으로 수행한 명령을 반복

검색

  • /: 문자열을 검색 (아래 방향으로)
  • ?: 문자열을 검색 (위 방향으로) — n: 검색된 다음 문자열로 이동
  • N: 검색된 이전 문자열로 이동

ex 모드 (ex Mode) 주요 명령어

명령 모드에서 :를 누르면 화면 하단에 프롬프트가 나타나며 ex 모드로 진입합니다.

저장 및 종료

명령어설명
:w저장 (Write)
:q종료 (Quit)
:q!변경 사항을 저장하지 않고 강제 종료
:wq저장하고 종료
ZZ(명령 모드에서) 저장하고 종료
:!bash현재 편집 상태를 유지한 채로 셸 실행 (exit로 복귀)

환경 설정 (:set)

명령어설명
:set nu행 번호 표시 (Number)
:set nonu행 번호 숨기기
:set ai자동 들여쓰기 (Auto Indent)
:set ic검색 시 대소문자 무시 (Ignore Case)
:set sm괄호의 짝을 찾아 표시 (Show Match)
:set list탭, 줄바꿈 등 특수 문자를 눈에 보이게 표시

vi 문자 치환 (Substitution)

  • 기본 형식: :[범위]s/[찾을패턴]/[바꿀내용]/[옵션]

  • 범위 지정:

    • %: 문서 전체
    • [시작행],[끝행]: 특정 행 범위 (예: 1,10)
    • .: 현재 커서가 있는 행
    • $: 마지막 행
  • 옵션:

    • g (global): 범위 내에서 패턴과 일치하는 모든 문자열을 치환 (없으면 행당 첫 번째만)
    • i (ignore case): 대소문자를 구분하지 않음
    • c (confirm): 치환할 때마다 사용자에게 확인을 받음
  • 예시: :%s/\<linux\>/Linux/gi

    • 문서 전체(%)에서 linux라는 단어(\<linux\>)를 대소문자 구분 없이(i) 찾아, 일치하는 모든 단어(g)를 Linux로 바꾼다.

vi 영구 설정

  • vi 실행 시 항상 특정 옵션(예: 행 번호)을 적용하려면 홈 디렉터리에 설정 파일을 만듭니다.
  • ~/.exrc: vi 편집기의 설정 파일.
  • ~/.vimrc: vim 편집기의 설정 파일.
    • 파일에 set nu와 같은 ex 명령어를 저장하면 됩니다.

기타 텍스트 에디터 ⌨️

에디터 종류 및 개발자

  • vi: 빌 조이 (UC 버클리)
  • vim: 브람 무레나르 (vi의 개선 버전, Vi IMproved)
  • emacs: 리처드 스톨만 (GNU 프로젝트)
  • pico: MIT에서 개발한 유닉스 기반 에디터
  • nano: GNU 프로젝트에서 pico를 기반으로 개발한 텍스트 에디터
  • gedit: GNOME 데스크톱 환경의 기본 그래픽 텍스트 에디터

NANO 주요 단축키

  • Ctrl + G: 도움말
  • Ctrl + O: 저장
  • Ctrl + X: 종료
  • Ctrl + K: 한 줄 잘라내기
  • Ctrl + U: 붙여넣기
  • Ctrl + W: 검색

emacs 주요 단축키

  • Ctrl + x, Ctrl + c: 종료
  • Ctrl + x, Ctrl + s: 저장
  • Ctrl + f: 앞으로 한 칸
  • Ctrl + b: 뒤로 한 칸
  • Ctrl + n: 다음 줄
  • Ctrl + p: 이전 줄
  • Ctrl + a: 줄의 시작으로
  • Ctrl + e: 줄의 끝으로