문서 편집기(Text Editor)는 문서 파일을 편집하기 위해 쓰이는 소프트웨어를 의미한다. GUI 환경의 경우 사용자들은 마우스 클릭 등을 이용하여 파일을 만들고 제거하는 등 큰 문제 없이 작업할 수 있기 때문에 큰 불편함을 느끼지 못한다.
하지만 CLI 환경에서 문서 편집은 어렵다. cat을 이용해서 문서를 작성하는 방법을 아는 사람들은 cat을 이용해서 문서를 작성할 때 enter 단위로만 코드 수정이 가능한 것을 확인했을 것이다.
만약 작성한 코드의 중간 부분을 수정하고 싶다면 모든 코드를 처음부터 쳐야 하는 문제가 발생하는 등 기본적인 셸 기능으로는 원하는 위치에 원하는 값을 적기 어렵다.
이 문제를 해결하기 위해 프로그래머들은 CLI 환경을 위한 편집기를 사용하며 우분투에서 주로 사용하는 편집기는 vi / vim, emacs, nano 등이 있다.
vi는 visual editor의 약자로 William Nelson Joy가 개발한 편집기이다. 개량형이 나오며 과거만큼 많이 사용되는 편집기는 아니지만 현대에 가장 많이 사용되는 편집기인 vim, neovim등의 모태가 되는 만큼 가장 기본적이면서도 필요한 기능들을 모두 포함하고 있다.
vim은 visual editor improved의 약자로 vi를 발전시킨 편집기이다.
vim은 **명령 모드(Command Mode)**와 편집 모드(Insert Mode) 두 가지 상태가 있다. 프로그램을 실행하는 순간 명령 모드에 들어가게 된다. 명령 모드에서 명령을 내려 편집 모드로 들어갈 수 있으며 편집 모드에서 ctrl + c 혹은 esc를 입력해 다시 명령 모드로 돌아올 수 있다.
명령 모드에서 명령어를 입력하면 vim은 입력 받은 명령어를 실행한다. vim에서 주로 사용하는 명령어는 다음과 같다.
| 분류 | 명령어 | 기능 |
|---|---|---|
| 편집 | i | 편집 모드로 진입, 커서 앞부터 작성 |
| 편집 | a | 편집 모드로 진입, 커서 뒤부터 작성 |
| 편집 | l | 편집 모드로 진입, 줄 맨 앞에서부터 작성 |
| 편집 | A | 편집 모드로 진입, 줄 맨 뒤에서부터 작성 |
| 이동 | w | 다음 단어 첫 글자로 이동 |
| 이동 | W | 공백 기준으로 다음 단어 첫 글자로 이동 |
| 이동 | b | 이전 단어 첫 글자로 이동 |
| 이동 | B | 공백 기준으로 이전 단어 첫 글자로 이동 |
| 이동 | gg | 문서 맨 위로 이동 |
| 이동 | G | 문서 맨 아래로 이동 |
| 이동 | ^ | 문장 맨 앞으로 이동 |
| 이동 | $ | 문장 맨 뒤로 이동 |
| 검색 | /[검색 내용] | 문서에서 [검색 내용]을 검색 |
• n과 N을 이용해 각각 다음 단어, 이전 단어로 이동 가능 | | 편집 | y | 복사하기 | | 편집 | c | 잘라내기 | | 편집 | p | 붙여넣기 | | 편집 | u | 실행 취소 | | 편집 | ctrl + r | 재실행 | | 편집 | dd | 현재 줄 잘라내기 | | 편집 | yy | 현재 줄 복사하기 | | 저장 | :w [파일 이름] | [파일 이름]으로 파일 저장하기
만약 vim [파일 이름]으로 미리 파일 이름을 지정했다면 :w 사용 |
| 저장 | :q! | 저장하지 않고 편집기 종료 |
| 저장 | :wq | 저장 및 편집기 종료 |
터미널에서 vim 입력 시 편집기로 들어올 수 있다.
이후 a를 입력하면 편집 모드로 들어갈 수 있다.