vi,vim 필수 명령문

서버 터미널에 접근하여 작업을 하는 분들은 기본적으로 VI,VIM 기초 명령문을 다루어야 합니다.
기본적인 내용과 가끔 써서 기억하지 못하는 내용 위주로 기입 하였습니다. 
VIM은 4가지 모드로 구성되어있습니다. 

Normal Mode: 명령어 입력 모드 (기본 모드) - 기본 상태 
Insert Mode: 텍스트 입력 모드 (i, a 등의 키로 진입) - 글자 입력을 위해 사용
Visual Mode: 텍스트 선택 모드 (v, V, Ctrl-v 등의 키로 진입) - 보통 여러줄 복사해서 붙여넣기 할때 사용
Command Mode: 명령어 라인 모드 (: 키로 진입) - 파일을 열어 : 입력

1. Vim 편집기 열기
vim filename

2. 편집기 종료
:q               # 저장하지 않고 종료
:wq              # 저장하고 종료
:q!              # 변경사항 무시하고 강제 종료
:x               # 변경사항이 있을 경우 저장하고 종료

3. 파일 저장
:w
:w filename      # 다른 이름으로 저장

4. 편집 모드로 전환
i                # 현재 커서 위치에서 입력 시작
I                # 줄의 시작에서 입력 시작
a                # 현재 커서 다음 위치에서 입력 시작
A                # 줄의 끝에서 입력 시작
o                # 현재 줄 다음에 새로운 줄을 추가하고 입력 시작
O                # 현재 줄 위에 새로운 줄을 추가하고 입력 시작

5. 명령 모드로 전환
Esc

6. 라인 내 이동 ( 시계 역방향 )
h                # 왼쪽으로 한 문자 이동
j                # 아래로 한 줄 이동
k                # 위로 한 줄 이동
l                # 오른쪽으로 한 문자 이동

7. 단어 단위 이동
w                # 다음 단어의 시작으로 이동
e                # 현재 단어의 끝으로 이동   ( 현재 단어의 끝에서  누르면 다음 끝으로 이동 )
b                # 현재 단어의 시작으로 이동 ( 현재 단어의 시작에서 누르면 이전 단어의 시작으로 이동 )

8. 줄 단위 이동
0                # 현재 줄의 처음으로 이동
^                # 현재 줄의 처음 비문자열로 이동
$                # 현재 줄의 끝으로 이동 

9. 특정 줄로 이동
:n               # n번째 줄로 이동

10. 화면 내 이동
H                # 화면의 맨 위로 이동
M                # 화면의 중간으로 이동
L                # 화면의 맨 아래로 이동

11. 텍스트 삭제
x                # 현재 커서의 문자 삭제
X                # 현재 커서에서 이전 문자 삭제
dd               # 현재 줄 삭제
dw               # 현재 단어 삭제
D                # 현재 커서부터 줄 끝까지 삭제

12. 텍스트 복사 및 붙여넣기
yy               # 현재 줄 복사
yw               # 현재 단어 복사
p                # 복사한 내용을 현재 커서 다음에 붙여넣기
P                # 복사한 내용을 현재 커서 이전에 붙여넣기

13. 텍스트 변경
cw               # 현재 단어 변경
cc               # 현재 줄 변경
C                # 현재 커서부터 줄 끝까지 변경

14. 검색
/pattern         # 정방향 검색
?pattern         # 역방향 검색
n                # 다음 검색 결과로 이동
N                # 이전 검색 결과로 이동

15. 치환
:s/old/new       # 현재 줄에서 old를 new로 치환
:s/old/new/g     # 현재 줄에서 old를 new로 전체 치환
:s/old/new/gc    # 치환 여부를 묻고 현재 줄에서 old를 new로 치환
:%s/old/new/g    # 전체 파일에서 old를 new로 치환
:%s/old/new/gc   # 치환 여부를 묻고 전체 파일에서 old를 new로 치환

16. 새 파일 열기
:e filename

17. 파일 목록 보기
:ls

18. 실행 취소 및 다시 실행
u                # 실행 취소(undo)
Ctrl+r           # 다시 실행(redo)

19. 명령어 반복
.                # 마지막 명령어 반복

20. 외부 명령어 실행
:!command        # 예: :!ls

21. 도움말 열기
:help
:help command    # 특정 명령어에 대한 도움말 보기 
aisjdfijisj

22. visual mode 
 v : visubla mode 진입 
 여러줄을 h,j,k,l로 선택후 yy 복사 > p 붙여넣기