사용 방법
vi는 리눅스 터미널에서 사용하는 대표적인 문서 편집기다.
vi는 2가지 모드가 있다.
- insert : 편집이 가능하다.
- edit : 편집이 불가능하다.
그냥 vi를 사용하면 edit모드로 들어가게 된다. vi test.txt처럼 말이다. 여기서 insert모드로 변경하는 가장 간단한 방법은 i키를 누르는 것이다. 다시 edit모드로 변경하려면 esc키를 누르면 된다.
vi의 명령어는 :으로 시작하는 명령어가 있고, 그냥 키보드를 눌러서 명령하는 인라인 명령어가 있다.
vi의 콜론 명령어
- :w : 파일을 저장하는 명령어다. 뒤에 이름을 지정하여 "다른 이름으로 저장"을 할 수 있다.
- :w! : 강제 저장으로, 다른 이름으로 저장을 할 때 겹치는 이름이 있을 경우 덮어쓰기 하는 용으로 사용한다.
- :r : 파일을 읽는 명령어다. 뒤에 이름을 지정하여 파일의 내용을 지금 문서에 추가할 수 있다.
- :f : 파일에 대한 여러가지 정보를 주는 명령어다. 파일이 몇 줄이며, 커서가 어디있는지를 알려준다.
- :q : 에디터를 나간다.
- :x : 변경사항이 있을 때만 저장한다.
인라인 모드의 명령어
인라인 모드의 명령어의 기본 포맷은 다음과 같다.
ncm
n : 명령어를 몇 번 반복할 것인가?
c : 무슨 명령어를 실행할 것인가?
m : 명령어를 적용하는 범위는 어디까지인가?
예시로, 3dw라는 명령어를 입력하면, 3개의 character를 지운다는 뜻이며, dW는 띄어쓰기로 구분된 단어를 지운다는 뜻이다.
지우는 명령어
- d : 이 라인을 지운다.
- w : 특수문자로 구분되는 단어 하나를 지운다.
- W : 띄어쓰기로 구분되는 단어 하나를 지운다.
- } : paragraph단위로 지운다.
- ^ : 현재 커서에서부터 라인의 앞쪽을 모두 지운다.
- /pattern : 입력한 검색어가 나올때까지 지운다.
- n : 위의 명령어과 같이 쓰는 명령어로, 같은 검색어가 나올때까지 지운다.
- fa(문자) : a라는 문자가 나올때까지 그 줄을 지운다
- ta(문자) : a라는 문자가 나올때까지 지우지만, a는 남겨놓는다.
- nx : 뒤에 있는 문자를 n만큼 지운다.
- nX : 앞에 있는 문자를 n만큼 지운다.
교체하는 명령어
- rx : 현재 자리에 있는 문자를 x문자로 바꾼다.
- Rtext : 커서 위치부터 뒤에 있는 문자를 text로 바꾼다. 컴퓨터에 있는 INSERT키와 동일한 역할을 한다.
- cd : 커서 위치부터 뒤에 있는 문자를 지우고 바꾼다.
r을 누르면 현재 커서 뒤부터 라인을 분리하며, J키를 누르면 아래 라인과 지금 라인을 합친다.
네비게이션 명령어
- h,j,k,l : 왼쪽, 아래, 위, 오른쪽으로 커서를 움직인다.
- w,W : 다음 단어로 커서를 이동시킨다. 처음으로 이동시킨다.
- e,E : 다음 단어로 커서를이동시킨다. 끝으로 이동시킨다
- (,) : 마침표를 기준으로 커서를 이동시킨다.
- {,} : paragraph단위로 커서를 이동시킨다.
- 0,$ : 0은 처음 그 줄의 처음, $은 그 줄의 마지막으로 커서를 이동시킨다.
- ^ : 그 라인의 빈칸이 아닌 처음으로 커서를 이동시킨다.
- n| : n에 해당되는 Column으로 이동시킨다.
검색 명령어
|text : 현재 커서 위치에서 뒤로 검색어를 찾는다.
?text : 현재 커서 위치에서 앞으로 검색어를 찾는다.
n : 다음 검색어의 위치로 이동을 한다.
N : 다음 검색어(|나 ?의 반대 방향)의 위치로 이동을 한다.
복사, 붙여넣기 명령어
[n]Y or : n개의 줄을 복사한다.
[n]ym : 복사하려는 범위를 m을 통해서 지정한다.
P,p : 복사한 내용을 붙여넣는다. P는 지금의 줄 위에 붙여넣고, p는 아래에 붙여넣는다.
교체 명령어
:[address]s/old/new/[g]
address : 어디 범위까지 지정을 해서 교체할 것인가?
- n : 주어진 줄
- n,m : n줄 부터 m줄 까지
- 1,. : 첫번째줄부터 지금 줄 까지
- .,$ : 지금 줄 부터 마지막 줄 까지
- 1,$ or % : 문서 전체