곰돌이 놀이터
[Linux] VI/VIM 단축키, 명령어 정리 본문
리눅스의 대표적인 에디터로 vi편집기 (또는 vim편집기)가 있으며, 명령어에 대해 정리를 하려고 한다. vim 에디터는 vi iMproved 의 약자로 기능상 약간의 차이가 있을뿐 다르지 않으며 리눅스에서는 vi를 입력하든 vim을 입력하든 둘 다 vim에디터를 실행시켜준다.
처음에는 단축키를 익혀야 하기 때문에 진입장벽이 높은 편이지만, 익숙해지기만 한다면 마우스로 하나하나 클릭하는것이 아닌 단축키만으로 모든 작업이 가능하기 때문에 더욱 더 빠르게 작업이 가능하다는 장점을 가진다.
또 텍스트 문서를 보거나 수정할 뿐만 아니라 리눅스에서 직접 코딩이 필요한 경우도 있을 수 있기 때문에 모든 단축키를 외우지는 못하더라도 어떤 단축키가 있는지 정도는 익혀야 할 것 같아서 정리를 해두려고 한다.
단축키/명령어
실행
명령어 | 동작 |
vi file | file 열기 |
vi file1 file2 | file1과 file2를 순서대로 열기 |
view file / vi -R file | file을 읽기모드로 열기 |
vi + file | file을 열고 커서를 본문의 마지막 줄에 위치 시킴 |
vi +n file | file을 열어 n번째 줄에 위치 시킴 |
vi -r file | 손상된 파일 회복 |
저장 및 종료
명령어 | 동작 |
:w | 저장하기 |
:wq | 저장 후 종료 |
:q | 저장하지 않고 종료 |
:q! | 변경된 내용을 저장하지 않고 강제로 종료 |
입력모드 전환
명령어 | 동작 |
i | 커서의 위치에서 입력모드로 전환 |
I | 커서가 위치한 줄의 맨 앞에서 입력모드로 전환 |
a | 커서가 위치한 다음 칸에서 입력모드로 전환 |
A | 커서가 위치한 줄의 맨 마지막에서 입력모드로 전환 |
o | 커서가 위치한 줄의 아래에 빈 줄 삽입 |
O | 커서가 위치한 줄의 위에 빈 줄 삽입 |
R | 수정모드로 전환 |
커서이동
명령어 | 동작 |
w | 다음 단어의 끝 부분으로 커서 이동 |
e | 다음 단어 앞 부분으로 커서 이동 |
b | 이전 단어로 이동 |
^, 0 | 줄의 처음으로 이동 |
$ | 줄의 마지막으로 이동 |
H | 화면 맨 위로 이동 |
M | 화면 중간으로 이동 |
L | 화면 맨 아래로 이동 |
G | 글의 맨 밑으로 이동 |
nG | n번째 줄로 이동 |
n% | n퍼센트에 해당하는 위치로 이동 |
[shift] + ↑ | 한 페이지 앞으로 이동 |
[shift] + ↓ | 한 페이지 뒤로 이동 |
[Ctrl] + i | 한 화면 위로 이동 |
[Ctrl] + b | 한 화면 아래로 이동 |
[Ctrl] + d | 반 화면 위로 이동 |
[Ctrl] + u | 반 화면 아래로 이동 |
[Ctrl] + e | 한 줄 위로 이동 |
[Ctrl] + y | 한 줄 아래로 이동 |
복사 및 붙여넣기
명령어 | 동작 |
yy | 현재 커서가 위치한 줄을 버퍼로 복사 |
p | 버퍼에 복사되어있는 내용을 커서 뒤에 삽입 |
P | 버퍼에 복사되어있는 내용을 커서 앞에 삽입( shift + p ) |
ny | 현재 커서가 위치한 줄에서부터 아래로 n줄 복사 |
:n1, n2y | n1~n2번째줄을 버퍼로 복사 |
:npu | n행에 버퍼에 복사되어있는 내용을 삽입 |
d | 현재 커서가 위치해있는 단어 복사 |
nyy | 현재 커서에서 부터 n만큼의 행 복사 |
삭제
명령어 | 동작 |
x | 현재 커서가 위치한 문자 삭제 |
dw | 단어 삭제 |
dd | 현재 커서가 위치한 줄 삭제 |
ndd | 현재 커서에서 부터 n만큼의 줄 삭제 |
d + ↑ | 현재 커서가 위치한 줄의 위로 2줄 삭제 |
d + ↓ | 현재 커서가 위치한 줄의 아래로 2줄 삭제 |
D | 한줄 내에서 커서의 위치 뒤로 모두 삭제 |
u | 바로 전에 수행한 명령 취소 |
문자열 찾기
명령어 | 동작 |
/name | name 문자열 찾기 |
n | 다음 name으로 이동( 아래로 검색 ) |
N | 이전 name으로 이동( 역방향, 위로 검색 ) |
문자열 대체
명령어 | 동작 |
:s/str/rep | 현재 줄의 str을 rep로 대체 |
:l,.s/str/rep/ | 1부터 현재 줄의 str을 rep로 대체 |
:%s/str/rep/g | 파일 전체 str을 rep로 전부 대체 |
:.$/aaa/bbb | 커서의 위치로부터 파일의 끝까지 있는 모든 aaa를 bbb로 대체 |
기타
명령어 | 동작 |
:set nu | 줄 번호 보여주기 |
:set nonu | 줄 번호 보여주기 취소 |
. | 바로 전에 실행한 명령어 재 실행 |
[ctrl] + l | 불필요한 화면 정리후 다시 표시 |
Comments