vi

vi란

-유닉스 계열 운영체제에서 가장 보편적인 화면 편집기
-vi 명령어는 vim(vi improved) 편집기로 alias 되어 있다.
-즉, 우리가 vi라고 호출하여 사용하는 건 사실 vim 이다.

vi 시작과 종료

1
2
3
4
5
6
7
8
9
10
11
12
# 시작
vi [options] [filename]

# 종료 (명령 모드)
ZZ              # Shift + zz : 변경 내용을 저장하고 종료

# 종료 (라인 모드)
:q              # 변경된 내용이 없는 경우 종료
:q!             # 저장하지 않고 강제 종료
:wq [filename]  # 저장하고 종료
:x              # 변경이 있었다면 저장하고 종료
:x!             # x + 같은 이름의 파일이 있다면 덮어씀

옵션

옵션 full name 설명
-R Readonly mode 읽기 전용으로 연다
-c command vi와 함께 동작시킬 커맨드를 적용한다
vi -c "command" [file]과 같이 사용한다.
+   편집기를 열면서 커서를 n번째 라인에 위치시킨다.

예시

1
2
vi /etc/passwd
vi -c "set nu" /etc/passwd   # 라인 번호 표시


vi 편집기의 세 가지 모드

모드 영문 설명
명령 모드 command mode 커서 이동, 삭제, 복사, 붙여넣기가 가능한 모드.
텍스트 직접 편집은 불가.
입력 모드 insert mode 텍스트 직접 편집이 가능한 모드.
라인 모드 Ex command mode 저장, 검색, 대치 등
텍스트 직접 편집은 불가.

명령 모드 -> 입력 모드

명령 키 영문 설명
a append 현재 커서 위치 오른쪽부터 텍스트를 추가
A append at end of line 현재 라인의 끝에 텍스트를 추가
i insert 현재 커서의 위치부터 텍스트를 삽입
I insert at beginning of line 현재 라인의 처음에 텍스트를 삽입
o open below 현재 라인의 아래에 라인이 열리고 텍스트 추가 가능
O open above 현재 라인의 위에 라인이 열리고 텍스트 추가 가능

명령 모드 -> 라인 모드 (검색, 대치, 저장)

명령키 설명
/pattern 순방향(글자 진행 방향)으로 pattern을 검색하여 커서를 이동
/pattern/+num pattern을 검색하고 그 뒤 num 번째 라인으로 이동
?pattern 역방향으로 pattern을 검색하여 커서를 이동
?pattern?-num pattern을 검색하고 그 앞 num번째 라인으로 이동
n 이전 검색을 같은 방향으로 반복
N 이전 검색을 반대 방향으로 반복
f 한 라인에서 검색할 때 사용
세미콜론(;) : 검색 반복
1
2
3
# 정규식 사용 가능
* : 애스터리스트. 임의의 문자가 0개 이상 나타날 수 있음
[abc..] : 대괄호 안의 문자 중 하나의 문자를 의미한다.

입력 모드 -> 명령 모드

명령키 설명
Esc 입력 모드에서 명령 모드로 전환한다.

라인 모드 -> 명령 모드

명령키 설명
Enter 라인 모드에서 명령 모드로 전환한다.
Esc Esc 라인 모드에서 명령 모드로 전환한다.

명령 모드에서의 명령

커서 이동 명령

명령 키 설명
h j k l 왼쪽 아래 위 오른쪽
ctrl+f Page Up
ctrl+b Page Down
w 다음 단어의 첫 자로 이동
b 앞 단어의 첫 자로 이동
0 (숫자0) 현재 라인의 첫 칸으로 이동
$ 현재 라인의 마지막 칸으로 이동
20G 20번째 라인으로 이동
G 마지막 라인으로 이동
5j 현재 라인에서 아래로 5라인을 이동
PageUp Page Up
PageDown Page Down

텍스트 삭제 명령

명령키 설명
x 커서 위치의 하나의 문자를 삭제
dw 커서의 위치부터 다음 단어 전까지 삭제
d$ or D 커서의 위치부터 현재 라인의 끝까지 삭제
d0 커서의 왼쪽부터 현재 라인의 처음까지 삭제
dd 현재 라인을 삭제
dG 현재 라인부터 파일의 끝까지 삭제
d20G 현재 라인부터 라인 번호 20까지 삭제
3dw 커서의 위치부터 세 단어를 삭제
5dd 현재 라인부터 다섯 라인을 삭제

텍스트 변경 및 치환 명령

명령키 설명
r 커서 위치의 한 문자를 대치
R 커서의 위치부터 계속 대치. 입력 모드로 전환된다.
s or cl 커서 위치의 문자가 삭제되고 입력 모드로 전환된다.
S or cc 현재 라인에 존재하는 문자가 삭제되고, 현재 라인에서 입력 모드로 전환됨
cw 커서 위치부터 단어의 끝까지 삭제되고 입력 모드로 전환됨
cb 커서의 왼쪽부터 단어의 앞까지 삭제되고 입력 모드로 전환됨
c) 커서 위치부터 문장의 끝까지 삭제되고 입력 모드로 전환됨
c} 커서 위치부터 문단의 끝까지 삭제되고 입력 모드로 전환됨

텍스트 복사 및 붙여넣기

텍스트 복사

명령키 설명  
텍스트 복사 삭제나 변경을 위한 명령 키 사용시 해당 텍스트가 복사됨(ctrl + x와 같음)
y 를 이용한 텍스트 복사
커서를 적당한 위치로 이동 후 y명령을 사용해 복사
yy 현재 라인을 복사  
5yy 현재 라인부터 다섯 라인을 복수  
yw 커서의 위치부터 다음 단어의 앞까지 복사  
y$ 커서의 위치부터 라인 끝까지 복사  
y0 커서 왼쪽부터 라인의 앞까지 복사  
y^ 커서 왼쪽부터 라인의 앞까지 복사. 빈칸은 복사하지 않음  
yG 현재 라인부터 파일의 끝까지 복사  
y) 커서의 위치부터 한 문장을 복사  
y} 커서의 위치부터 한 문단을 복사  
     

텍스트 붙여넣기

명령키 설명
텍스트 붙여넣기 p or P 명령을 이용해 붙여넣기 가능
  문자의 경우 커서의 좌측 또는 위쪽에 붙여넣기 가능
  라인의 경우 커서의 우측 또는 아래쪽에 뭍여넣기 가능