Unix에서 기본적으로 사용하는 텍스트 편집기 ‘vi Editor’에 관한 간단한 사용법입니다. macOS는 기본적으로 ‘vim’이라고 하는 vi의 확장판을 가지고 있는데, 이 글에서는 ‘vi’의 기본적인 내용에 대해서만 언급하였습니다.
‘vi Editor에 숙달되기만, 고급 텍스트 에디터보다도 강력하다’고들 흔히 이야기하는데, 필자는 ‘vi’가 꼭 필요한 상황에만 (기본적인 지식으로) 사용하고 있습니다.
목차
vi Editor와 함께 기본 파일 다루는 법
vi Editor를 이용해 파일을 열고 닫는 기본적인 사용 방법입니다. vi Editor 사용을 고려하고 계시다면, 반드시 처음으로 아셔야할 내용입니다.
vi Editor로 파일 열기
vi 에디터로 파일을 열고자 하시면, ‘vi [열고자 하는 파일]’을 입력해주시면 됩니다.
vi example.txt
참고) GUI 기반의 텍스트 에디터를 터미널에서 열고자 하시면, 아래 Sublime Text 예시와 같이 사용하시면 됩니다. ▼
open -a Sublime\ Text example.txt
보통은, .bash_profile 혹은 /bashrc에 ‘alias’를 만들어두고, 사용합니다.
- .bash_profile 내 아래와 같이 작성 – 작성 참고글 ▼
alias sublime='open -a Sublime\ Text'
- sublime [파일 이름] 으로 사용 ▼
vi Editor로 파일 저장 및 종료
vi Editor는 ‘편집 모드(Insert Mode)’와 ‘명령 모드(Command Mode)’로 나뉘어져 있는데, 편집 모드에서는 저장 및 종료가 불가능합니다. ‘ESC’ 키로 ‘명령 모드’로 복귀하신 뒤 아래 내용을 진행하시기 바랍니다.
- vi Editor 커맨드 입력 절차 : 편집 모드 > ESC 키로 명령 모드로 복귀 > :wq 입력(저장 후 종료) ▼
파일을 단순 저장하는 방법 혹은 저장과 종료를 동시에 결정하는 방법(‘저장 후 종료’, ‘저장하지 않고 종료’) 총 2가지가 있습니다.
종료 및 저장 명령어 ▼
:(콜론) 키도 눌러주셔야합니다.
- :w 저장
- :q 아무 수정 작업을 하지 않았거나, 이전에 :w로 저장을 했을 경우 종료
- :wq 저장 후 종료
- :q! 저장 하지 않고 종료
라인 넘버 출력
기본적으로 보이지 않는 라인 넘버를 출력하는 방법입니다. ‘명령 모드’에서 아래 커맨드를 입력해주시면 됩니다.
:set number
다시 라인 넘버를 감추고 싶으시면, 아래 커맨드를 입력하시면 됩니다. ▼
:set nonumber
편집 모드(Insert Mode 혹은 Edit Mode)
vi Editor에서 커서가 깜박이며에서 문서 작성을 준비하는 모드입니다. vi Editor가 처음 구동되었을 때는 ‘명령 모드’로 진입되기 때문에, 편집을 위해선 반드시 ‘편집 모드’로 진입하셔야 합니다. ‘명령 모드’에서 키보드 화살표키로 자유롭게 이동하시고 ‘i’ 혹은 ‘o’ 키를 통해 ‘편집 모드’로 진입하시면 됩니다.
많이 사용하는 ‘편집 모드’ 진입 방법 ▼
- i 키 : 현재 커서가 있는 곳에 ‘편집 모드’로 진입합니다.
- o 키 : 현재 커서가 있는 곳에 한줄을 추가하며, ‘편집 모드’로 진입합니다.
추가) 파일로 가장 하단에는 “파일 이름” 라인수, 캐릭터수(문자수)가 표시 됩니다. ▼
- “example.txt” 5줄(공백 포함), 55개 문자 ▼
명령 모드(Command Mode)
대부분의 강력한 기능은 ‘명령 모드’에서 사용합니다. 명령어가 많은 만큼 한번에 외운다기보단, 규칙을 찾아 하나씩 손에 익혀가시길 추천드립니다. 처음 vi를 접했던 대학 시절, 모든 기능을 억지로 외워야겠다고 생각했던 것이 저의 큰 착각이었던 것 같습니다(도움이 되지 않았다고는 얘기할 수 없습니다만).
패턴 검색 | /[문자]
찾고자하는 문자열이 있는 곳으로 커서를 바로 옮겨주는 기능입니다. ‘/[찾고자하는 문자]’ 형식으로 사용하시면 됩니다. ‘명령 모드’에서만 동작하기 때문에, ‘편집 모드’에 계시다면, ‘ESC’로 ‘명령 모드로’ 복귀하셔야만 합니다. 대/소문자를 구분합니다.
- /press > press 위치로 커서 이동, /iExample > iExample 위치로 커서 이동 ▼
사용 방법은 충분히 기록되었다고 생각하고, ‘명령 모드’에서 바로 사용할 수 있는 명령어들을 리스팅해두었습니다.
삭제
‘d’는 ‘delete’의 약자입니다. ‘dd’ 커맨드 하나만 알고 계셔도 매우 요긴하게 사용됩니다.
- dd : 한줄 삭제
- dd5 : 다섯 줄 삭제
- dw : delete word 한 단어 삭제
- d5w : 다섯 단어 삭제
- d$ : 커서부터 이줄 끝까지 삭제
- d0 : 커서부터 이줄 앞까지 삭제
- dG : 커서부터 문서 끝까지 삭제
복사
‘y’는 ‘yank’의 약자입니다. 즉, ‘끌어당긴다(복사한다)’라는 뜻입니다. 마찬가지로, ‘yy’만 알고 계셔도 요긴하게 사용됩니다.
- yy : 한줄 복사 (이로써 같은 명령어를 두번 쓰면 한줄이라는 것을 알 수 있습니다)
- yy5 : 다섯 줄 복사
- yw : yank word 한 단어 복사
- y5w : 다섯 단어 복사
- y$ : 커서부터 이줄 끝까지 복사
- y0 : 커서부터 이줄 앞까지 복사
- yG : 커서부터 문서 끝까지 복사
붙여넣기
- p : 커서 앞으로 붙여넣기
- P : 커서 뒤로 붙여넣기
- u : undo 되돌리기
- x : 커서 안의 문자 하나 삭제
- X : 커서 뒤에 문자 하나 삭제(delete 키와 유사)
기타 수정 커맨드
본문 초반에 ‘입력 모드’를 적어두며, 2가지만 언급했었는데, 실은 아래와 같이 다양한 방법이 있습니다. vi Editor 에 입문하시는 분이라면, 한번에 모두를 다 사용하시기보단, 하나씩 손에 익혀가시는 것을 더 추천드립니다.
- i : insert의 약자, ‘입력 모드’로 전환
- a : append의 약자, i와 비슷한 기능이지만, 커서 한칸 앞에서 ‘입력 모드’로 전환한다.
- o : 한줄을 아래에 추가하면서 ‘입력 모드’로 전환
- O : 한줄을 위에 추가하면서 ‘입력 모드’로 전환
- b : ‘back’의 약자, 한 단어 뒤로 이동 (‘입력 모드’로 전환하지 않음)
- w : ‘forward’의 약자, 한 단어 앞으로 이동 (‘입력 모드’로 전환하지 않음)
커서 이동
모두 커서에 이동에 관한 내용이라 (커서) 단어는 생략하였습니다.
- h : (커서) 한칸 뒤로 이동
- j : 한줄 아래로 이동
- k : 한줄 위로 이동
- l : 한칸 앞으로 이동
- H : 화면 맨 위로 이동
- M : 화면 중간으로 이동
- L : 화면 맨 아래로 이동
- G : 글의 맨 밑으로 이동
- 1G : 글의 맨 처음으로 이동
외부 Unix 커맨드 불러오기
외부 Unix 커맨드를 방법입니다. ‘!![커맨드]’로 입력하시면 됩니다. 이런 내용도 가능하다고 생각하고, 후에 찾아보시면 될 듯합니다.
예시 1) 현재 시간을 불러오는 ‘date’ 커맨드와 조합해보면, 아래와 같습니다. ▼
- 입력 ▼
!!date //화면상에는 .!date와 같이 표기됩니다.
이상입니다.
참고
[…] 맥 터미널 vi Editor사용법 1편(기본) […]
[…] 맥 터미널 vi Editor사용법 1편(기본) […]