vi (visual editor)
vi improved
vim은 다양한 플랫폼을 지원함
vim [filename] - 특정 파일명을 열면서 시작
[filename] = “-” = -stdin-를 의미함
find . -name “*.txt” | vim -
일반보드: normal mode
입력모드: insert mode
명령행모드 : command-line mode
비주얼 모드: visual mode

| 단축어 | 뜻 | 기능 |
|---|---|---|
| a | append | 현재 커서에서 한 칸 뒤로 이동한 후, 입력 모드로 전환 |
| A | append | 현재 행의 끝으로 이동한 후, 입력 모드로 전환 |
| i | insert | 현재 커서 위치에서 입력 모드로 전환 |
| I | insert | 현재 행의 맨 앞으로 이동 후, 입력 모드로 전환 |
| o | open line | 현재 행 아래에 새로운 행을 하나 만든 후, 입력 모드로 전환 |
| O | open line | 현재 행 위에 새로운 행을 하나 만든 후, 입력 모드로 전환 |
저장을 하지 않고 나가기 시도할 경우 error 발생함
| 단축어 | 뜻 | 기능 |
|---|---|---|
| :w | write | 파일 저장 |
| :q | quite | vim 종료 |
좌, 하, 상, 우 커서 이동 (in nomer mode)
| 단축어 | 설명 |
|---|---|
| [#]h | 좌로 #칸 이동 |
| [#]j | 아래로 #칸 이동 |
| [#]k | 위로 #칸 이동 |
| [#]l | 우로 #칸 이동 |
| ^ | 행의 맨 앞으로 이동 |
| $ | 행의 맨 끝으로 이동 |
page up/down도 없다고 생각하자
마우스가 없다고 생각하자
| 단축어 | 뜻 | 설명 |
|---|---|---|
| ctrl + b | backward | 위로 한 화면 스크롤 |
| ctrl + f | forward | 아래로 한 화면 스크롤 |
| ctrl + u | upward | 위로 1/2 화면 스크롤 |
| ctrl + d | downward | 아래로 1/2 화면 스크롤 |
goto # line
| 단축어 | 뜻 | 설명 |
|---|---|---|
| [#]gg | goto | #행으로 이동합니다. (default # = 1) |
| [#]G | goto | #행으로 이동합니다. (default # = end line) |
| :# | #행으로 이동합니다. |
단축어
:file → 현재 문서 위치 정보를 하단 상태 바에 표시합니다
삭제(잘라내기)
| 단축어 | 뜻 | 설명 |
|---|---|---|
| x | X | 커서에 위치한 문자 삭제 |
| dd :d | delete | 현재 행을 삭제 |
| D | delete | 현재 컬럼 위치에서 현재 행의 끝부분까지 삭제 |
| J | jump | 아래 행을 현재 행의 끝에 붙임 |
붙여넣기
| 단축어 | 뜻 | 설명 |
|---|---|---|
| p :pu | paste | 현재 행에 붙여 넣습니다. (put) 개행 문자가 포함된 경우에는 현재 행의 아래에 붙여 넣습니다. |
| P | paste | 현재 행의 위쪽에 뭍입니다. |
5p → 5번 붙여넣어짐
| 단축어 | 뜻 | 설명 |
|---|---|---|
| yy :y Y | copy | 현재 행을 레지스터에 복사 (yank) 합니다. |
| 단축어 | 뜻 | 설명 |
|---|---|---|
| u | undo | 바로 이전에 행한 명령 한개를 취소합니다. (undo) |
| CTRL-R | redo | 바로 이전에 취소했던 명령을 다시 실행합니다. (redo) |
| . (dot) | 이전 명령어 반복 |
: 기호 앞에 쓰임
| 기호 | 설명 |
|---|---|
| . | 현재 행 |
| $ | 마지막 행 |
| +# | 현재 위치에서 #만큼 아래 행을 의미 |
| -# | 현재 위치에서 #만큼 위 행을 의미 |
| % | 문서(파일) 전체를 의미 |
예시
| 명령어 | 설명 |
|---|---|
| :20d | 20행 삭제 |
| :10, 20d | 10~20행 삭제 |
| :10,$d | 10~마지막 행까지 삭제 |
| :%y | 문서 전체 복사 (% = 1, $) |
| :.,+20y | 현재 행부터 아래로 스무행을 복사 |
| :-10,+5d | 현재 행부터 위로 10행, 아래로 5행, 총 16행을 삭제 |
| :40pu | 40번 행에 레지스터의 내용을 붙여넣습니다. |
마우스의 드래그 작업을 대신하는 모드
| 기호 | 설명 |
|---|---|
| v | visual mode(default), 현재 커서 위치에서 블록 지정 |
| V | visual line mode, 현재 커서가 위치한 행에서 행 단위로 블록을 지정 |
| CTRL-V | visual block mode, 열 단위로 블록을 지정 (CTRL-V가 예약되어 사용할 수 없는 경우 CTRL-Q로 대신할 수 있다.) |
tip - ':' 를 사용하면 normal mode처럼 쓸 수 있음 (e.g. :’<,’>d → 선택한 내용이 삭제 됨)
colum editing
| I | insert | 특정 열에 문자열을 삽입 하는 경우 |
|---|---|---|
| A | append | 특정 열에 문자열을 추가 하는 경우 |
| c | change | 특정 열에 문자열을 교체 하는 경우 |
| ~ | switch case | |
| ESC*2 | escape | 명령어 적용후 모드 바꾸기 |
| 기호 | 설명 |
|---|---|
| o | visual mode에서 커서의 위치 스위칭 |
| gv | previous highlighted text 영역 불러오기 |
| 기능 | 명령어 | RedHat 계열 | Debian 계열 |
|---|---|---|---|
| 일반 vi | vi | vim-minimal | vim-tiny |
| enhanced vim | vim | vin-enhanced | vim-nox |
| vim with X | vimx, gvim | vim-Xll | vim-gnome |
| vim-athena |
sudo apt install vim-gtk3gnome: 21세기 디자인
athena: 20세기 디자인
vim —version | grep clipboard