[Unix] vi로 편집
텍스트 입력
1. 초기 명령에서 입력 모드로 이동 후 입력이 가능함
2. 입력 모드일 때는 화면 하단에 '--끼워넣기--'가 표시
3. 입력 모드에서 esc를 누르면 명령 모드로 돌아감
명령 키 | 설명 |
a | 현재 커서 위치의 오른쪽부터 텍스트를 추가(add)할 수 있음 |
A | 현재 라인의 끝에 텍스트를 추가할 수 있음 |
i | 현재 커서의 위치부터 텍스트를 삽입(insert)할 수 있음 |
l | 현재 라인의 처음에 텍스트를 삽입할 수 있음 |
o | 현재 라인의 아래에 라인이 열리고 텍스트를 추가 할 수 있음 |
O | 현재 라인의 위에 라인이 열리고 텍스트를 추가 할 수 있음 |
커서 이동 명령
1. 명령 모드에서 화살표 키와 PgUp, PgDn키를 사용할 수 있음
2. 그 외 다양한 키
명령 키 | 설명 |
h j k l | ← ↓ ↑ → |
Ctrl + f /Ctrl + b | page up / page down |
w | 다른 단어의 첫 자로 이동 |
b | 앞 단어의 첫 자로 이동 |
o | 현재 라인의 첫 칸으로 이동 |
$ | 현재 라인의 마지막 칸으로 이동 |
10G | 10번째 라인으로 이동 |
G | 마지막 라인으로 이동 |
5j | 현재 라인에서 아래로 5라인을 이동 |
텍스트 삭제 명령
1. 명령 모드에서 텍스트를 삭제하거나 변경함
- 커서를 적당한 위치로 옮긴 후 삭제함
명령 키 | 설명 |
x | 커서 위치의 한 문자를 삭제 |
dw | 커서의 위치부터 다음 단어 전까지 삭제 |
d$ 또는 D | 커서의 위치부터 현재 라인의 끝까지 삭제 |
d0 | 커서의 왼쪽부터 현재 라인의 처음까지 삭제 |
dd | 현재 라인을 삭제 |
dG | 현재 라인부터 파일의 끝까지 삭제 |
d20G | 현재 라인부터 라인 번호 20까지 삭제 |
5dw | 커서의 위치부터 다섯 단어를 삭제 |
5dd | 현재 라인부터 다섯 라인을 삭제 |
텍스트 변경(또는 치환) 명령
1. 일정 부분의 텍스트를 삭제하고 입력 모드로 전환 됨
2. 삭제, 변경 또는 붙여 넣기를 한 후 커서를 이동하고 도트(.)명령을 수행하면 앞서 수행한 작업을 반복할 수 있음
명령 키 | 설명 |
r | 커서 위치의 한 문자를 대치 |
R | 커서의 위치부터 계속 대치 할 수 있음. 입력 모드로 전환 됨(수정 모드) |
s 또는 cl | 커서 위치의 문자가 삭제되고 입력 모드로 전환됨(삽입) |
S 또는 cc | 현재 라인에 존재하는 문자가 삭제되고 현재 라인에서 입력 모드로 전환됨 |
cw | 커서 위치부터 단어의 끝까지 삭제되고 입력모드로 전환됨 |
cb | 커서 왼쪽부터 단어의 앞까지 삭제되고 입력모드로 전환됨 |
c) | 커서 위치부터 문장의 끝까지 삭제되고 입력모드로 전환됨 |
c} | 커서 위치부터 문단의 끝까지 삭제되고 입력모드로 전환됨 |
텍스트 복사
1. 삭제나 변경을 위한 명령 키를 사용할 때 텍스트가 복사됨
2. 커서를 적당한 위치로 이동한 후 y 명령을 사용하여 복사함
텍스트 붙여 넣기
1. p 또는 p 명령을 이용하여
(커서의 왼쪽/위라인) 또는 (오른 편/아래 라인)에 붙여넣기를 할 수 있음
명령 키 | 설명 |
yy | 현재 라인을 복사 |
5yy | 현재 라인부터 다섯 라인을 복사 |
yw | 커서의 위치부터 다음 단어의 앞까지 복사 |
y$ | 커서의 위치부터 라인의 끝까지 복사 |
y0 | 커서 왼쪽부터 라인의 앞까지 복사 |
y^ | 위와 같으나 라인 앞의 빈칸은 복사하지 않음 |
yG | 현재 라인부터 파일의 끝까지 복사 |
y) | 커서의 위치부터 한 문장을 복사 |
y} | 커서의 위치부터 한 문단을 복사 |
블록 지정하기
1. v 또는 V 명령을 사용하여 문자 또는 라인 단위로 지정함
- 블록을 지정하고 싶은 곳에 커서를 이동하고 화살표를 사용하여 블록을 지정하고 삭제(x) 또는 복사 (y) 함
- 커서를 이동한 후 p 또는 P 명령을 사용하여 붙여 넣기를 할 수 있음
명령 키 | 설명 |
v | 비주얼 모드에서 한번에 한 문자씩 선택 |
V | 비주얼 모드에서 한번에 한 라인씩 선택 |
명령의 취소와 기타 명령
1. 명령 모드에서 다음과 같은 명령을 수행 할 수 있음
명령 키 | 설명 |
u | 이전 변경 작업을 취소(undo) |
Ctrl + r | 앞서 취소했던 작업을 다시 하는 것으로 취소를 취소 |
:el | 마지막으로 저장한 후의 작업을 취소하고 다시 작업 |
:n | n번째 라인으로 이동 |
J 또는 :j | 현재 라인과 아래 라인을 합침 |
:lcommand | vi를 사용하다 쉘 명령 command를 수행 |
:sh | vi 를 잠시 빠져나가 쉘 명령을 수행함. 쉘 명령으로 exit을 실행하면 다시 vi로 돌아옴 |
:se nu | 화면 좌측에 라인 번호를 표시 |
Ctrl + g | 화면 하다넹 파일의 이름, 전체 라인 수, 현재 라인의 상대적 위치를 퍼센티지로 표시 |
:r filename | 지정된 파일의 내용을 읽어 현재 커서의 아래 줄에 추가 |
검색 명령 - 1
1. 한 라인에서 검색할 때 명령 모드에서 f를 사용
- 예를 들어 fa 명령은 커서 다음 위치부터 a를 찾음
- 세미콜론(;)을 사용하여 검색을 반복
2. 파일 전체를 대상으로 검색할 때 다음 명령을 사용
명령 키 | 설명 |
/pattern | 순방향으로 pattern을 검색하여 커서를 이동 |
/pattern/+num | pattern을 검색하고 그 뒤(+) num번째 라인으로 이동 |
?pattern | 역방향으로 pattern을 검색하여 커서를 이동 |
?pattern?-num | pattern을 검색하고 그 앞(-) num번째 라인으로 이동 |
n | 이전 검색을 같은 방향으로 반복 |
N | 이전 검색을 반대 방향으로 반복 |
검색 명령 - 2
명령 키 | 설명 |
/hello | 순방향으로 단어 hello를 검색하여 커서를 이동 |
?goodbye | 역방향으로 단어 goodbye를 검색하여 커서를 이동 |
/The.*does | 단어 The를 포함하고 그 이후에 단어 does를 포함하는 라인을 검색함 점(.) : 임의의 한 문자와 매칭 애스터리스크(*) : 앞 문자(여기서는 임의의 한 문자)가 0개 이상 나타날 수 있음을 의미 |
?[pP]rint | 단어 print 나 Print를 역방향으로 검색함 []는 안에 포함하는 문자 중 하나와 매칭됨 |
검색과 대치
1. 문자열을 검색하여 대치하는 기능
[g][address]s/pattern/replacement[/option]
- [g][address] : 검색범위로, % 는 전체
ex ) /pine/ : 커서 다음에 나오는 pine을 포함하는 한 라인
g/pine/ : pine을 포함하는 모든 라인을 대상으로 함
- s : pattern을 찾아 replacement로 대치하라는 연산
- 마지막 옵션이 생략되면 검색된 라인에서 첫 번째 패턴만 대치하며, /g가 사용되면 모든 패턴을 대치
명령 키 | 설명 |
;/s/pattern/replacement | 커서가 위치한 라인에서 첫 번째 등장하는 pattern을 replacement로 대치 |
:/%s/pattern/replacement | 전체 범위의 라인에서 위와 같은 것을 수행. % 대신에 1,$를 넣어도 됨 |
:%s/pattern/replacement/g | 위와 같으나 등장하는 모든 pattern을 대치 |
:1,10s/pattern/replacement/g | 위와 같으나 1 - 10 라인에서 수행 됨 |