곰돌이 놀이터

[Linux] VI/VIM 단축키, 명령어 정리 본문

운영체제 (Operating System)/Linux

[Linux] VI/VIM 단축키, 명령어 정리

달나라 곰돌이 2020. 9. 26. 11:13

 

리눅스의 대표적인 에디터로 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