
Linux: vi 편집기 사용법 및 명령어
2023, Aug 28
- Kramdown table of contents
vi 편집기 사용법 및 명령어
vi 편집기란?
때때로 터미널에 접근하여 로그같은 파일을 보거나 수정할 때 vi 명령어를 통해 편집기를 열어 작업을 수행하고는 한다. 하지만 사용법을 모르거나 그때그때 구글링을 통해 필요한 기능만을 사용하는 것은 생산성이 떨어지는걸 느꼈다. vi 편집기에 대해 정리해보고자 한다.
vi는 linux 표준 에디터를 실행하는 커맨드이며, visual editor의 약자이다. 이를 통해 열고자하는 파일을 에디터로 형태로 열어 편집할 수 있는데 이때 이 편집기를 vi 편집기
라 하며 에디터에는 편집 모드
와 명령어 모드
가 있다.
기본 사용법
편집 모드
편집 모드로 전환하기 위한 키는 i,R,A,O,o
가 있다. 각각의 키는 다음과 같은 기능을 한다. (대,소문자 구분)
Replace
를 제외하고는 모두 insert
속성을 띄고 있으며, ESC
키를 누르면 명령어모드
로 전환된다. 이후 편집모드의 속성을 변경할 수 있다.
- i: 커서가 위치한 곳에서 입력을 시작한다.
- R: 커서가 위치한 곳에서 입력을 시작하며, 입력한 문자열이 기존 문자열을 덮어쓴다.
- A: 커서가 위치한 곳에서 입력을 시작하며, 입력한 문자열이 기존 문자열을 덮어쓰지 않고 뒤에 추가된다.
- O: 커서가 위치한 줄의 윗줄에 입력을 시작한다.
- o: 커서가 위치한 줄의 아랫줄에 입력을 시작한다.
- ESC: 편집모드를 종료하고 명령어모드로 전환한다.
명령어 모드
명렁어 모드에서는 편집기의 기능
을 사용할 수 있다. 명령어 모드로 전환하기 위한 키는 ESC
키이다. 명령어 모드에서는 다음과 같은 기능을 사용할 수 있다.
- 문자의 삭제
- x: 커서가 위치한 한 개의 문자를 삭제한다.
- dd: 커서가 위치한 한 줄을 삭제한다.
- dw: 커서가 위치한 한 단어를 삭제한다.
- xdd: 커서가 위치한 줄부터 x줄을 삭제한다. (예: 3dd => 3행 삭제)
- J: 커서가 위치한 줄과 아랫줄을 합친다.
- 행의 복사, 붙여넣기
- Y: 커서가 위치한 한 줄을 복사한다.
- yy: 커서가 위치한 한 줄을 복사한다.(Y와 동일, 대소문자 구분)
- p: 커서가 위치한 줄의 아랫줄에 복사한 줄을 붙여넣는다.
- yyp: 커서가 위치한 줄의 아랫줄에 복사한 줄을 붙여넣는다.(Yp와 동일, 대소문자 구분)
- vi 에디터 종료
- :wq: 편집한 내용을 저장하고 vi 편집기를 종료한다.
- :q!: 편집한 내용을 저장하지 않고 vi 편집기를 종료한다.
- :w: 편집한 내용을 저장한다.
- :q: 편집한 내용을 저장하지 않고 vi 편집기를 종료한다.
-
커서 이동
vi 에디터의 명령어모드에서 이동할 때 방향키를 쓰지 않고, 아래의 키를 사용한다.- h: 커서를 하나의 문자 왼쪽으로 이동한다.
- j: 커서를 1행 아래로 이동한다.
- k: 커서를 1행 위로 이동한다.
- l: 커서를 하나의 문자 오른쪽으로 이동한다.
- 0: 커서를 현재 행의 맨 앞으로 이동한다.
- $: 커서를 현재 행의 맨 뒤로 이동한다.
- ^: 커서를 현재 행의 첫번째 글자로 이동한다.
- G: 커서를 마지막 행으로 이동한다.
- 숫자G: 커서를 숫자행으로 이동한다. (예: 10G => 10행으로 이동)
- w: 커서를 다음 단어의 첫번째 글자로 이동한다.
- b: 커서를 이전 단어의 첫번째 글자로 이동한다.
- Ctrl + f: 한 화면 앞으로 이동한다.
- Ctrl + b: 한 화면 뒤로 이동한다.
- Ctrl + d: 반 화면 앞으로 이동한다.
- Ctrl + u: 반 화면 뒤로 이동한다.
- Ctrl + y: 한 줄 위로 이동한다.
- Ctrl + e: 한 줄 아래로 이동한다.
- 그 외 유용한 키
- :set nu: 편집기에 줄번호를 표시한다.
- :set nonu: 편집기에 줄번호를 표시하지 않는다.
- :set ic: 검색시 대소문자를 구분하지 않는다.
- :set noic: 검색시 대소문자를 구분한다.
- :set hls: 검색어를 하이라이트한다.
- :set nohls: 검색어를 하이라이트하지 않는다.
- :set all: 모든 설정을 표시한다.
- :set: 설정된 모든 설정을 표시한다.