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 명령을 이용해 붙여넣기 가능 |
|
문자의 경우 커서의 좌측 또는 위쪽에 붙여넣기 가능 |
|
라인의 경우 커서의 우측 또는 아래쪽에 뭍여넣기 가능 |