[리눅스] vi 편집기 단축키
vi 편집기 사용법 
|   | vi filename  | 파일열기, 작성  | 
|   | vi +18 filename  | 18행으로 파일 열기  | 
|   | vi +/"string" fn  | "string"의 처음 발생 단어부터  | 
|   | vi -r filename  | 손상된 파일 회복  | 
|   | view filename | 읽기 전용으로 파일 열기 | 
| 커서명령(이동)  | ||
|   | h(←)  | 왼쪽으로 커서 이동  | 
|   | j(↓)  | 아래로 커서 이동  | 
|   | k(↑)  | 위로 커서 이동  | 
|   | l(→)  | 오른쪽으로 커서 이동  | 
|   | w  | 한 단어 오른 쪽으로 커서 이동?  | 
|   | b  | 한 단어 왼쪽으로 커서 이동?  | 
|   | Return  | 한 행 아래로 커서 이동  | 
|   | Back Space  | 한 문자 왼쪽으로 커서 이동  | 
|   | Space Bar  | 한 문자 오른 쪽으로 커서 이동  | 
|   | H  | 화면의 맨위로 이동  | 
|   | M  | 화면의 중간으로 이동  | 
|   | L  | 화면의 맨 아래로 이동  | 
|   | Ctrl + F  | 한 화면 앞으로 이동  | 
|   | Ctrl + D  | 반 화면 앞으로 이동  | 
|   | Ctrl + B  | 한 화면 뒤로 이동  | 
|   | Ctrl + U | 반 화면 뒤로 이동 | 
| 문자와 행 삽입  | ||
|   | a  | 커서 오른쪽에 문자 삽입  | 
|   | A  | 커서 오른쪽, 행의 끝에 문자 삽입  | 
|   | i  | 커서 왼쪽에 문자 삽입  | 
|   | I  | 커서 왼쪽, 행의 처음에 문자 삽입  | 
|   | o  | 커서 아래에 행 삽입  | 
|   | O | 커서 위에 행 삽입 | 
| 텍스트 변경  | ||
|   | cw (종료:ESC)  | 단어변경  | 
|   | cc (종료:ESC)  | 행 변경  | 
|   | C  (종료:ESC)  | 커서 오른쪽의 행 변경  | 
|   | s   (종료:ESC)  | 커서가 위치한 문자열 대체  | 
|   | r  | 커서 위치의 문자를 다른 문자로 대체  | 
|   | r - Return  | 행 분리  | 
|   | J  | 현재 행과 아래 행 결합  | 
|   | xp  | 커서 위치 문자와 오른쪽 문자 교환  | 
|   | ~  |  | 
|   | u  | 이전 명령 취소  | 
|   | U  | 행 변경 사항 취소  | 
|   | :u  | 이전의 최종 행 취소  | 
|   | .  | 이전 최종 명령 반복  | 
 
|   | x  | 문자 삭제  | 
|   | dw  | 단어 삭제  | 
|   | dd  | 행 삭제  | 
|   | D  | 커서 오른쪽 행 삭제  | 
|   | :5,10 d | 5-10 번째 행 삭제 | 
| 텍스트 복사 및 이동  | ||
|   | yy  | 행 yank 또는 복사  | 
|   | Y  | 행 yank 또는 복사?  | 
|   | dd  | 행 삭제  | 
|   | P  | yank되거나 삭제된 행 현재 행 위에 삽입  | 
|   | p  | yank되거나 삭제된 행 현재 행 아래에 삽입  | 
|   | :1,2 co 3  | 1-2행을 3행 다음으로 복사  | 
|   | :4,5 m 6 | 4-5행을 6행 위로 이동 | 
| 행 번호 설정  | ||
|   | :set nu  | 행 번호 표시  | 
|   | :set nonu | 행 번호 숨기기 | 
| 행 찾기  | ||
|   | G  | 파일의 마지막 행으로 가기  | 
|   | 21G | 파일의 21번째 행을 가기 | 
| 탐사 및 대체  | ||
|   | /string/  | string 탐색  | 
|   | ?string?  | string 역방향 탐색  | 
|   | n(N)  | string의 다음(이전) 계속 탐색  | 
|   | :g/search-string/s//replace-string/gc?  | |
|   |   | 각 발생 탐색 후 확인하고 대체  | 
|   | :s/srt/rep  | 현재 행의 str을 rep로 대체  | 
|   | :1,.s/str/rep/  | 1부터 현재 행의 str을 rep로 대체  | 
|   | :%s/str/rep/g  | ?파일 전체 str을 rep로 전부 대체  | 
|   |   |   | 
| 화면정리  | ||
|   | :Ctrl-1 | 불필요한 화면정리 후 다시 표시   | 
| 파일을 파일로 삽입  | ||
|   | :r filename  | 커서 다음에 파일 삽입  | 
|   | :34 r filename | 파일을 34번째 행 다음에 삽입 | 
| 보관 및 종료  | ||
|   | :w  | 변경사항 보관  | 
|   | :w filename  | 버퍼를 파일로 보관  | 
|   | :wq  | 변경사항 보관 후 vi 종료  | 
|   | ZZ  | 변경사항 보관 후 vi 종료?  | 
|   | :q!  | 변경사항 보관하지 않고 종료  
 |