본문 바로가기
🌐OS/Linux

[Linux] Vi Editor 사용 방법

by inbeom 2023. 8. 27.
728x90

 💡 Mode

 

명령 모드(command mode)

  • 처음 vi 명령어로 vi를 시작하면 나오는 기본 모드.
  • 방향키를 이용하여 커서를 이동하며 ‘dd’, ‘yy’, ‘x’ 등의 명령어로 삭제, 복사, 붙여넣기 등의 동작을 함

입력 모드(insert mode)

  • 명령모드에서 ‘i’ or ‘a’ 명령을 통해 입력모드로 넘어감.
  • 자유롭게 코드나 글을 작성할 수 있음
  • 명령모드로 다시 돌아가려면 ‘ESC’를 누르면 됨

마지막 행 모드(Last line mode)

  • 명령모드에서 ‘:’ (콜론) 을 입력하면 바닥에 명령어 입력창이 나옴.
  • 작성한 내용을 저장하거나 종료 할 수 있음

 

 💡 명령어

명령 모드(command mode)

vi  명령어 동작
i - 현재 커서 위치에 삽입 (입력모드로 넘어감)
a - 현재 커서 바로 다음위치에 삽입 (입력모드로 넘어감)
o - 현재 줄 다음 위치에 삽입 (입력모드로 넘어감)- 영문 오(o) 입니다.
x - 커서가 위치한 곳의 글자 1개 삭제. (5x : 문자 5개 삭제)
dw - 커서가 위치한 곳에서 부터 단어 삭제 (커서가 위치한 곳 부터 띄어쓰기 까지)
dd - 커서가 위치한 곳의 한 줄 삭제 (삭제이지만, p로 복구가능)
u - 방금 한 명령 취소 (ctrl + z 라고 생각하면 됩니다)
yy - 현재 줄을 버퍼로 복사 (한 줄을 ctrl + c 한다고 생각하면 됩니다.)
- 5줄 복사 : 5yy 
p - 현재 커서가 있는 줄 바로 아래에 버퍼 내용 붙여넣기 (이전에 복사한 줄을 현재 커서 아래부터 ctrl + v 한다고 생각하면 됩니다.)
- 5dd를 이용해서 다섯줄을 지운 것도 p 한번으로 붙여넣기 가능합니다.
- 그렇다면 : 잘라내기 dd -> 붙여넣기 p
(N)dd - N 행 삭제 (삭제가 되는 것 처럼 보이지만 실제로는 버퍼에 들어가 있습니다. 버퍼에 들어가 있기 때문에 p를 이용해서 붙여넣기 가능)
- 잘라내기 라고 생각하면 됩니다. (ctrl + x)
- vi에서 여러줄을 삭제하고 싶다면 (N)dd 를 사용하면 됩니다. (N에는 숫자가 들어갑니다)
k - 위로! (커서가 한 줄 위로 올라감.)
j - 아래로! (커서가 한 줄 아래로 내려감)
l - 오른쪽으로! (커서가 한칸 우측으로감)
- 엘 입니다
h - 왼쪽으로! (커서가 한칸 좌측으로감)
0 - 커서가 있는 줄의 맨 앞으로 감 (home 키라고 생각하면 됩니다)- 숫자 0(영) 입니다.
$ - 커서가 있는 줄의 맨 뒤로 감 (end 키라고 생각하면 됩니다)
( - 현재 문장의 처음
) - 현재 문장의 끝
{ - 현재 문단의 처음
} - 현재 문단의 끝
숫자- - 숫자 만큼 윗 줄로 이동
숫자+ - 숫자 만큼 아랫 줄로 이동
G - 파일의 끝으로 이동
- 대문자로 사용해야 함
r - 한 문자 변경
cc - 커서가 있는 줄의 내용 변경

 

마지막 행 모드(Last line mode)

vi 명령어 동작
w - 현재 파일명으로 파일 저장. (저장만 함 꺼지지는 않음)
w [파일명] - 입력한 파일명으로 파일 저장. (저장만 함 꺼지지는 않음)
q - vi 종료 (저장되지 않음)
q! - vi 강제 종료 ( ! 가 붙으면 강제로 수행)
wq - 저장 후 종료
wq! - 강제 저장 후 종료 ( ! 가 붙으면 강제로 수행)
f [파일명] - 파일이름을 [파일명]으로 변경
숫자 - 해당 라인으로 커서 이동
$ - 파일의 맨 끝 줄로 이동
e! - 마지막 저장 이후 모든 편집 취소 
/문자열 - 현재 커서 위치에서부터 파일 앞쪽으로 문자열 탐색
?문자열 - 현재 커서 위치에서부터 파일 뒤쪽으로 문자열 탐색
set nu - vi 라인번호 출력
set nonu - vi 라인번호 출력 취소

 

728x90

'🌐OS > Linux' 카테고리의 다른 글

[Linux] 파일배포 및 관리  (0) 2023.08.27
[Linux] 환경변수 & 서비스 가동  (0) 2023.08.27
[Linux] File & Directory  (0) 2023.08.27
[Linux] 기본 명령어  (0) 2023.08.27
[Linux] 특징과 구조  (0) 2023.08.27