본문 바로가기
[ Linux ]

[Linux] Vi editer란? vi 단축키 정리

by 히앤님 2020. 10. 29.
반응형
SMALL

리눅스 VI ( Visual Editor ) 편집기


vi 편집기는 유닉스 계열에서 가장 많이 사용되는 편집기이다. 1976년 빌조이가 개발하였다. vi 편집기는 한 화면을 편집하는 비쥬얼 에디터 ( Visual Editor ) 이다.

 

VI ( Visual Editor ) 편집기의 특징


vi는 Emacs와 함께 Unix 환경에서 가장 많이 쓰이는 문서 편집기이다. 1976년 빌 조이가 초기 BSD 릴리즈에 포함될 편집기로 만들었다. vi라는 이름은 한 줄씩 편집하는 줄단위 편집기가 아니라 한 화면을 편집하는 비주얼 에디터라는 뜻에서 유래했다. 간결하면서도, 강력한 기능으로 열광적인 사용자가 많다.

현재는 오리지널 vi를 사용하는 경우는 거의 없고, 일반적으로 기능을 모방하여 만들어진 클론을 사용하고 있다. 이런 클론 중 많이 쓰이는 것은 기능이 다양한 것을 장점으로 내세우며, 리눅스 배포판에 포함되는 Vim, 그리고 BSD 라이센스로 제공되며 원본 vi의 동작과 호환성으로 정평이 나 있는 nvi, 독자적인 팬층을 확보한 elvis 등이 있다.

vi 편집기가 동작하는 원리를 보면 버퍼에서 작업을 하게 된다. 그러므로 저장을 시키는 명령어를 입력하지 않는 이상 디스크상에 파일의 내용으로 저장되는 것은 아니다.



출처 : https://tear94fall.github.io/lecture/2020/02/10/vi-keyboard-short-cut.html

vi 단축키(자주 사용하는 것 위주로)

기본기능

기능
h ⬅️ 커서를 왼쪽으로 움직임
j ⬇️ 커서를 아래로 움직임
k ⬆️ 커서를 위로 움직임
l ➡️ 커서를 오른쪽으로 움직임
- 커서를 줄의 처음으로 옮기
gg 문서의 맨위로 커서를 이동
Shift + g 문서의 맨 마지막으로 커서를 이동
Ctrl + f 한페이지 아래로 이동
Ctrl + b 한페이지 이전으로 이동
Ctrl + d 반페이지 아래로 이동
Ctrl + u 반페이지 위로 이동
Ctrl + e 페이지를 한줄씩 아래로 이동
Ctrl + y 페이지를 한줄씩 위로 이동
Shift + h 페이지는 이동하지 않고, 화면 내에서 커서를 맨 위로 이동 시킴
Shift + m 페이지는 이동하지 않고, 화면 내에서 커서를 맨 중간으로 이동 시킴
Shift + l 페이지는 이동하지 않고, 화면 내에서 커서를 맨 마지막으로 이동 시킴
x 커서부터 오른쪽으로 삭제
Shift + x 커서기준으로 커서 왼쪽으로 삭제
v 글자 단위 블럭 지정
Shift + v 라인단위 블럭 지정
Ctrl + v 블럭단위 블럭 지정 (h,j,k,l로 지정이 가능함)
dd 현재 커서가 위치한 라인 삭제
dG 현재 커서가 위치한 라인부터 마지막 까지 삭제
yy 현재 커서가 위치한 라인 복사
p 현재 커서가 위치한 라인 바로 아래 붙여 넣기
Shift + p 현재 커서가 위치한 라인 바로 위 라인에 붙여 넣기
$ 커서를 라인의 맨 마지막으로 이동
^ 커서를 라인의 맨 처음으로 이동
i 현재 커서가 위치한 문자의 앞에 insert
Shift + i 현재 커서가 위치한 라인의 맨 앞에 insert
a 현재 커서 위치에서 한칸 다음으로 이동해서 insert
Shift + a 현재 커서가 위치한 라인의 마지막 위치에서 insert
o 현재 커서가 위치한 라인의 아래에 한줄 삽입하고, 커서를 새로운 라인에 위치한 후 insert
Shift + o 현재 커서가 위치한 라인의 위에 한줄을 삽입하고, 커서를 새로운 라인에 위치한 후 insert
s 현재 커서가 위치한 문자를 지우고 insert
Shift + s 현재 커서가 위치한 라인을 지우고 insert
u Undo, 이전으로 되돌리기
Ctrl + r Redo, 이전으로 되돌리기 취소
> 2번 클릭 들여쓰기
>} 한문단 전체 들여쓰기
2 > > 2줄 들여쓰기
< 2번 클릭 내어쓰기
~ 현재 커서가 위치한 문자가 대문자면 소문자로, 소문자면 대문자로 변경한다
Ctrl + a 현재 커서가 위치한 문자가 숫자면 숫자를 증가 시킬 수 있다 (자릿수 변경 가능)
Ctrl + x 현재 커서가 위치한 문자가 숫자면 숫자를 감소 시킬 수 있다 (음수 값도 가능)

파일 관련 기능

기능
:q 종료
:q! 강제 종료
:wq 저장 후 종료
:w 현재 파일 명으로 저장
:w {filename} filename으로 저장
vi ./{PATH} 파일 네비게이션 기능이다. 현재 디렉토리의 리스트를 보여준다.
커서가 위치한 디렉토리에 엔터를 누르면 해당 디렉터리의 리시트를 다시 보여준다.
파일에서 엔터를 누르면 해당 파일을 열어서 보여준다. (vim 6.0 부터 사용가능하다)

화면 관련 기능

기능
:split (:sp) 화면을 수평으로 나눈다. 두개의 화면에 같은 파일이 표시된다.
:split (:sp) {fileanem} 수평으로 나눠진 화면에 filename을 표시한다.
:vsplit (:vs) 화면을 수직으로 나눈다
:vsplit (:vs) {fileanem} 수직으로 나눠진 화면에 filename을 표시한다.
Crtl + ww 화면을 이동할때 사용한다. (다음화면으로 이동 한다)
Crtl + w {h,j,k,l} 화면을 이동할때 사용한다. (상하좌우 키를 이용해, 원하는 위치로 이동한다)
Ctrl + w= 분할된 화면 사이즈를 동일하게
:close 화면을 닫을때 사용한다
:new 새로운 창을 수직으로 분할된 화면에 열기
:tabnew 새창을 현재 화면과 같은 위치에 열기 (상단에 탭 추가됨)
gt 오른쪽 탭으로 이동
gT 왼쪽 탭으로 이동

기타 기능

기능
Ctrl + v(블럭), Shift + i(클릭), esc 키 두번 클릭 여러줄 수정
:set number 줄번호 보이기
:set nonumber 줄번호 없애기
:{줄 번호} 줄번호로 이동1
{줄번호} + Shift + g 줄번호로 이동2
/{찾을 내용} 단어 찾기
n 또는 * 단어 찾기 위로
Shift +n 또는 # 단어 찾기 아래로

접기 기능

기능
zf 선택 부분 접기
zo 부분 펴기 (open)
zc 부분 접기 (close)
zi 누를 때마다 접기/펴기 할 수 있음 (zc/zo)를 누르지 않아도 됨
zd 현재 위치의 폴드 삭제 하기
zM 모두 접기
zR 모두 펴기
zE 현재 문서의 모든 폴드 삭제
zD 현재 위치의 겹쳐진 폴드 삭제

출처 : https://tear94fall.github.io/lecture/2020/02/10/vi-keyboard-short-cut.html

반응형
LIST

댓글