리눅스의 vi 편집기, 문서 편집기는 윈도우 메모장 수준의 문서 편집기이다.
이는 무조건 알아야 한다. (기본적인 기능 손에 달달 외워질 때까지 숙지)
빈도가 정말 높고 사용 가능성 많기 때문이다.
vi는 visual 이라는 단어에서 유래되었다.
(당시에는 정말 비쥬얼한 문서 편집기여서 그랬나보다)
vi는 UNIX 기반이다. 유닉스에서는 여전히 vi라는 것을 쓴다.
리눅스에서의 vi는 정확히 vim(vi improved)이다.
vim은 기존 vi 기능을 100% 호환하고, 사용자 편의 추가 기능 제공한다.
(vim은 화살표와 키패드, 기능키 모두 지원)
그럼 이러한 vi가 어려운(까다로운) 이유는 무엇일까?
1) 텍스트 기반 문서 편집기 -> 단축키를 써야 함 (키를 모르면 편집 불가)
2) 모드가 존재 (자동차의 기어 같은 존재) -> 입력모드 / 명령모드 / 라스트라인 모드
(윈도우에서 C와 Ctrl + C 같은 Ctrl을 누르는 것들을 모드를 바꿔 눌러야 함)
(아래 링크의 게임에서 vi를 연습할 수도 있다. https://vim-adventures.com/)
그럼에도 불구하고 꼭 알아야 하는 이유는 무엇일까?
1) 모든 종류의 터미널에서 사용 가능하다
2) 서버가 죽었을 때 그래픽이 올라오기 전에 텍스트 환경에서 써야 한다
(Ctrl + Alt + F3으로 텍스트 기반, Ctrl + Alt + F2으로 GUI 기반 리눅스 환경으로 이동 가능하다.)
그럼 이제 자세한 사용법을 알아보겠다.
vi 모드의 세가지 종류
명령 모드 (command mode)
입력 모드 (input/insert mode)
라스트라인 모드 (lastline mode)
파일을 문서 편집기로 열기
# vi funfile
# vim funfile
(vi라고 작성해도 리눅스가 알아서 vim으로 해석)
파일을 저장하고 종료하기
[ESC] : wq [ENTER]
wq는 write와 quit를 의미
! : 강제종료 (q만 쓰면 버퍼 때문에 오류가 날 수 있음)
파일 저장 없이 종료
[ESC] : q! [ENTER]
다른 이름으로 저장 및 종료
[ESC] : wq [ENTER] 파일명
저장
[ESC] : w [ENTER]
단축키
h j k l (화살표 사용 가능)
좌 하 상 우
w (word) : 좌 --> 우 한 단어씩 이동
숫자 + w : 숫자 만큼의 단어씩 빠르게 이동
b (back) : 우 --> 좌 한 단어씩 이동
숫자 + b : 숫자 만큼의 단어씩 왼쪽으로 빠르게 이동
^ : 커서를 라인의 시작으로 이동 (많이 쓰는 단축키)
$ : 커서를 라인의 마지막으로 이동 (많이 쓰는 단축키)
G (go) : 파일의 마지막 라인으로 이동 (대문자 G)
숫자 + G : 특정 라인으로 이동
ctrl + f (forward) : page down
ctrl + b (backward) : page up
H(Home) : 처음으로
M(middle) : 중간으로
L(Last) : 끝으로
입력 모드
i (insert) : 입력 모드 전환 후 커서 앞에 입력
a (append, 붙여넣기) : 입력모드 전환 후 커서 뒤에 입력
o : 커서 아래 빈줄 추가 후 입력
O : 커서 위에 빈줄 추가 후 입력
I : 커서가 위치하는 라인의 시작 입력
A : 커서가 위치하는 라인의 끝 입력
삭제 (=잘라내기)
x : 커서 뒤가 삭제 / 윈도우의 delete 키처럼 동작
X : 커서 앞이 삭제 / 백스페이스
dw (delete word) : 현재 커서부터 한 단어 끝까지 삭제 (한 단어 삭제)
숫자 + dw : 숫자 만큼 단어 삭제
dd : 라인 삭제
숫자 + dd : 숫자 만큼 라인 삭제
붙여넣기
p : 커서가 위치한 줄 뒤/아래 붙여넣기
P : 커서가 위치한 줄 앞/위 붙여넣기
복사
yw (yank word) : 단어 복사
yy (yank yank) : 라인 복사
숫자 + yw : 숫자 만큼의 단어 복사
뒤로가기 (undo)
u : 되돌리기, 이전의 상태로 이동
(윈도우의 Ctrl + z와 같은 기능)
검색 (last line mode에서 진행해야 함)
ESC + / + 단어 : 커서를 기준으로 아래로 검색 (n을 누르면 아래로 내려가 다음 단어, N을 누르면 위로)
바꾸기 (substitute, 치환) (last line mode에서 진행해야 함)
: s/원래단어/바꿀단어/g : 한 단어 바꾸기
: 숫자,숫자s/원래단어/바꿀단어/g : 숫자와 숫자 사이에만 바꾸기 (범위 설정 가능)
:1,10s/the/@@@@@/g : 첫번째부터 10번째 줄까지 the를 @@@@@로 치환
:%s/the/@@@@/g : 파일 전체에서 the를 @@@@로 치환
(/g는 하나의 줄에서 가장 첫번째 단어만 치환되는 것이 아닌, 하나의 줄에서 모두 치환.)
(참고) 한글 지원 설정
apt-get install language-pack-ko
export LANG=ko_KR.UTF8
vimtutor