엔지니어?엔지니어../Linux

vi editor - 1. 명령어 (기본)

햇살한모금 2011. 12. 16. 00:02

저장 및 종료

:w 저장
:w file.txt file.txt 로 저장
:w >> file.txt file.txt 에 덧붙여 저장
:q vi 종료
:wq! 강제 저장 후 종료
:q! 저장하지 않고 종료
ZZ 저장 후 종료
:e file.txt file.txt 파일을 불러옴
:e   현재 파일을 불러옴 (?)
입력
a 커서 위치 다음 칸부터 입력
A 커서 행 맨 마지막에 입력
i 커서 위치에 입력
I 커서 행 맨 앞에 입력
o 커서 아래에 행 추가후 입력
O 커서 위에 행 추가 후 입력
s 커서 위치의 한 글자를 지우고 입력
cc 커서 위치의 한 행을 지우고 입력
블록선택 + c 선택된 텍스트 삭제 후 입력
블록선택 + r  선택된 텍스트 치환
이동
h 왼쪽으로 이동
k 위로 이동
j 아래로 이동
l 오른쪽으로 이동
H 화면 맨 위로 이동
L 화면 맨 아래로 이동
M 화면 중앙으로 이동
w 다음 단어 첫 글자로 이동
W 공백 이후 단어 첫 글자로 이동
b 이전 단어 첫 글자로 이동
B 공백 이전 단어 첫 글자로 이동
e 단어의 마지막 글자로 이동
E 다음 공백 바로 앞 글자로 이동
^ 현재 행 첫 글자로 이동
$ 현재 행 마지막 글자로 이동
+ 다음 행 첫 글자로 이동
-  이전 행 첫 글자로 이동
( 이전 문장 첫 글자로 이동
) 다음 문장 첫 글자로 이동
{ 이전 문단으로 이동
} 다음 문단으로 이동
[n]H 위에서 n번째 행으로 이동
[n]L 아래서 n번째 행으로 이동
ctrl+u 반 화면 위로 스크롤
ctrl+d 반 화면 아래로 스크롤
ctrl+b 한 화면 위로 스크롤
ctrl+f 한 화면 아래로 스크롤
gg 문서 맨 위로 이동
G 문서 맨 마지막으로 이동
[n]G n번째 행으로 이동 ( :[n]와 동일)
편집 - 삭제
x 커서 위치 글자 삭제
X 커서 바로 앞 글자 삭제
dw 한 단어 삭제
d0 커서부터 행 처음까지 삭제
D 커서부터 행 끝까지 삭제 ( d$와 동일)
dd 커서 행 전체 삭제
dj 커서 행과 아래 행 삭제
dk  커서 행과 커서 윗 행 삭제
편집 - 복사 및 잘라내기 / 붙여넣기
< vi 레지스터 >        
※ :reg로 검색되는 17개의 레지스터 : "", "0 ~ "9, "-, "., ":, "%, "#, "/ 
"" 바로 이전에 복사 또는 지워진 내용    
"1 ~"9 복사 또는 지워진 내용이 순차적으로 들어감 ("1->"9 FIFO 형식)
". 마지막에 타이핑한 내용 저장    
"% 현재 파일명        
"/ 가장 최근 검색한 문자열      
:reg 레지스터 상태 확인      
"[n]p n번 레지스터의 내용 붙여넣기    
※ 네임 레지스터        
a-z 까지 26개 네임 레지스터가 있음      
"a3yy 3행을 복사하여 a 레지스터에 저장    
"ap a레지스터의 내용을 붙여넣음    
yw 단어 복사
[n]yw n개 단어 복사
yy 한 행 복사
[n]yy n개 line 복사
p 붙여넣기
[n]p n번 붙여넣기
dw 단어 잘라내기
dd 행 잘라내기
편집 - 블록 지정
~ 대소문자 전환
d 삭제
y 복사
d 삭제
c 치환
> 라인 앞에 탭 삽입
< 라인 앞에 탭 제거
: 선택된 영역에 대해 명령
J 행을 합침
U 대문자로 바꿈
u 소문자로 바꿈
undo/redo
u  되돌리기 ctrl+r 되돌리기
탐색
/[검색할 문자] 커서 아래 방향으로 검색 ?[검색할 문자] 커서 위 방향으로 검색
n 다음 문자 찾기  (/, ? 에 따라 방향 다름)
N 커서 이전 방향으로 다음 문자 찾기
치환
:[범위]/[매칭 문자열]/[치환 문자열]/[행 범위]
범위 % 문서 전체
[n1],[n2] n1번째 라인부터 n4번째 라인
-[n],[+n] 위로 1행, 아래로 3행 범위 내
행범위 g 한 행 전체
c 사용자 확인 후 치환
:g/[패턴]/[매칭 문자열]/[치환 문자열]/[행 범위]
패턴이 있는 행의 [매칭 문자열]을 치환


ex)
 :%s/old/new/g 문서 내 old라는 문자열을 모두 new로 바꿈
:g/pattern/s/old/new/g pattern이 있는 모든 행의 old를 new로 교체
:g/pattern/s//new/g :%s/old/new/g와 동일