What is vi?
- Unix 계열에서 사용되는 text 편집기
- 최근의 Redhat 계열 Linux에서는 vim을 vi로 alias 처리(vim 패키지 미설치시 미적용)
- UNIX와 Linux의 Terminal CLI 환경에서는 가장 기본적인 편집기이기 때문에 기본적인 사용키 정도는 익혀두는 것이 좋습니다.
3 modes of vi
- Command Mode(명령) : esc 입력 상태, 기본값
- Insert Mode(입력) : 편집 상태
- Last Line Mode(명령) : Command Mode상 : “shift + ;” 입력 상태, 파일 또는 vi 상태 제어
Commande Mode Control
| Input | Function |
| h | 왼쪽 이동 |
| j | 위로 이동 |
| k | 아래로 이동 |
| l | 오른쪽 이동 |
| ^ or 0 | 행의 가장 처음으로 이동 |
| $ | 행의 가장 끝으로 이동 |
| gg | 제일 첫 행으로 이동 |
| G | 제일 끝 행으로 이동 |
| b | 왼쪽 특수문자 혹은 한단어의 처음으로 이동 |
| B | 왼쪽 한단어의 처음으로 이동 |
| x | 현재 커서 위치 삭제 |
| X | 현재 커서가 위치한 앞 글자 삭제 |
| dw | 현재 커서 위치 한단어 삭제 |
| d$ | 현재 커서 위치 행 삭제 |
| dd | 현재 커서부터 마지막 행까지 삭제 |
| CTRL+b | 한페이지 위로 이동 |
| CTRL+f | 한 페이지 아래로 이동 |
| 숫자+G | 해당 숫자의 행으로 이동 |
| w | 오른쪽 특수문자 혹은 한단어의 처음으로 이동 |
| W | 오른쪽 한단어의 처음으로 이동 |
| i | 현재 커서 앞쪽에 입력 |
| I | 현재 커서 행의 맨 앞에서 입력 |
| a | 현재 커서 뒤쪽에 입력 |
| A | 현재 커서 행의 마지막에 입력 |
| o | 현재 커서 행의 아래 줄에 입력 |
| O | 현재 커서 행의 위쪽 줄에 입력현재 커서 행의 위쪽 줄에 입력 |
| s | 현재 커서의 한 글자를 지우고 입력 |
| S | 현재 커서의 행을 지우고 입력 |
| r | 현재 커서의 한 글자를 교체 |
| cw | 현재 커서의 한 단어 교체 |
| u | Undo(입력시 마다 이전 작업으로 이동) |
| 숫자+yy | 현재 커서부터 숫자만큼의 행을 복사(1은 생략 가능) |
| yw | 현재 커서의 한 단어 복사 |
| Y$ | 현재 커서부터 마지막 행까지 복사 |
| 숫자+p | 복사한 내용을 현재 커서 다음에 붙여넣기(숫자 횟수 만큼) |
| 숫자+P | 복사한 내용을 현재 커서 전에 붙여넣기(숫자 횟수 만큼) |
| / | 커서의 위치에서 아래로 검색 |
| ? | 커서의 위치에서 위로 검색 |
| n | 검색 결과에서 아래 행 이동 |
| N | 검색 결과에서 위 행 이동 |
모든 제어는 커서의 위치 기준
Insert Mode Control
- i, a등의 Command Mode 제어키를 통해 입력 모드로 전환
- 문서의 작성 또는 편집이 가능한 상태
Last Line Mode Control
| Input | Function |
| :s/찾는문자열/치환문자열 | 현재 커서 행에서 검색, 치환 |
| :1,10s/찾는문자열/치환문자열 | 1행에서 10행까지 검색, 치환 |
| :%s/찾는문자열/치환문자열 | 전체 행에서 검색, 치환 |
| \+/ | 특수문자를 검색하려면 해석방지를 위해 그 앞에 \를입력 |
| :nohl | 검색등을 통해 하이라이트(Highlight)처리된 블럭을 해제 |
| :set number | 행 번호 표시 |
| :set nonumber | 행 번호 표시 취소 |
| :set autoindent | 들여쓰기 설정 |
| :set noautoindent | 들여쓰기 제거 |
| :set list | 문단,조판부호 보기 |
| :set nolist | 문단,조판부호 안보이게 |
| :set ignorecase | 검색시 대소문자 구별 제거 |
| :set noignorecase | 검색시 대소문자 구별 |
| :set window=30 | 한 화면당 행의 갯수 30개로 지정 |
| :set all | 현재 설정된 vi 모든 설정값 보기 |
| :q | 저장하지 않고 vi 종료 |
| :q! | 읽기전용인 파일을 수정후 강제로 저장할때 |
| :w | 현재내용을 저장 |
| :w! | 읽기전용인 파일을 수정후 강제로 저장할때 |
| :wq | 저장하고 종료 |
| :wq! | 읽기전용인 파일을 수정후 강제로 저장하고 종료하기 |
| :w “filename” | 새로운 파일명으로 저장 |
모든 제어는 커서의 위치 기준
IT Infomation, Ultima Online