Linux | vi 편집기 명령어

Ga0·2023년 9월 23일
0

기타

목록 보기
10/16
post-custom-banner

파일을 작성하거나 수정할 때 보통 편집기가 필요하다. 보통 집에서 컴퓨터를 쓸 땐 윈도우를 쓰거나 MacOS를 쓰는 경우가 많기 때문에 (메모장, Note와 같은) 리눅스 환경에서 지원하는 vi편집기 명령어에 대해서는 생소할 수 있다.

윈도우에서 지원하는 GUI(사용자가 동작하기 편한 그래픽 형태)와 달리 리눅스는 CLI(명령어를 입력하여 동작시키는 형태)이기 때문에 단축키나 명령어를 알아야 편집을 할 수 있다.

모드

명령 모드

- vi 실행

" vi 파일명 "을 하면 새로운 문서를 편집할 수 있는 환경이 만들어진다.
ex) vi text01

- vi 시작

  • 위와 같이 vi를 실행했다면, vi가 시작되는 첫 모드가 명령 모드이다.

입력 모드

  • 명령 모드에서 i or a 키를 눌러 입력 모드로 들어가게 된다.
  • 입력 모드에서는 자유롭게 코드나 글을 작성할 수 있다.
    • ESC : 명령 모드로 돌아감
    • i : 커서가 현재 위치한 부분에서부터 시작
    • a : 커서 바로 다음 부분부터 시작
    • shift+spacebar : 영/한 변환

콜론 모드

  • 명령 모드에서 : (콜론) 을 입력하면 콜론 모드로 들어가게 된다.
  • 콜론 모드 맨 아랫줄에 입력 가능한 공간이 있는데, 여기에 명령어를 입력함으로써 vi를 저장 및 종료할 수 있다.

vi 명령어

입력 모드로 전환

i : 커서 앞(왼쪽)부터 입력
a : 커서 다음(오른쪽)부터 입력

명령 모드로 전환

ESC : 입력 모드 -> 명령모드 / 콜론 모드 -> 명령 모드

저장/종료

:q   : 종료 (저장할 것이 있으면 확인 문구가 나옴)
:q!  : 저장하지 않고 강제로 종료
:w   : 저장
:wq  : 저장 후 종료
ZZ   : 저장 후 종료(:wq와 동일)
:wq 파일 이름 : 저장 후 파일 이름 지정

=> vi 편집기에서는 비정상 종료를 하면 .swp 파일이 생기는데, 필요하지 않을 경우 따로 삭제작업 필요.

삭제

x      : 커서에 있는 글자 삭제
X      : 커서 앞에 있는 글자 삭제
dw     : 커서를 기준으로 뒤에 있는 단어 글자 삭제 (커서 포함)
db     : 커서를 기준으로 앞에 있는 단어 글자 삭제
dd     : 커서가 있는 라인(줄) 삭제
D      : 커서 위치로부터 행의 끝까지 삭제
:5,10d : 5~10번째 행 삭제
=> dw, db, dd 명령 앞에 삭제할 숫자를 지정
 ex)
    + 3dw : 커서 뒤에 있는 단어 글자 3개 삭제
    + 2db : 커서 앞에 있는 단어 글자 2개 삭제
    + 5dd : 커서가 있는 줄부터 5줄 삭제
=> 삭제 된 내용은 버퍼에 저장되어 붙여넣기가 가능

커서 이동

h, j, k, l : 좌,하,상,우 커서 이동 (방향 키가 없는 키보드에서 사용)
w          : 다음 단어의 첫 글자로 이동
b 		   : 이전 단어의 첫 글자로 이동
G		   : 마지막 행으로 가기
:숫자       : 지정한 숫자 행으로 이동 ex) :5

복사/붙여넣기

/* 복사 */
yw : 커서를 기준으로 뒤에 있는 단어 글자 복사 (커서 포함)
yb : 커서를 기준으로 앞에 있는 단어 글자 복사
yy : 커서가 있는 라인(줄) 복사
=> yw, yb, yy 명령 앞에 복사할 숫자를 지정 가능 
  ex) 
  	+ 3yw : 커서 기준으로 현재 단어부터 뒤로 3개의 단어 복사
  	+ 2yb : 커서 기준으로 앞에 있는 2개의 단어 복사
  	+ 4yy : 현재 커서가 위치한 행으로부터 4행을 복사
    
/* 붙여넣기 : 복사한 내용, 삭제한 내용을 붙여넣음 */
p(소문자) : 커서 다음에 붙여넣기
P(대문자) : 커서 이전에 붙여넣기

찾기

/문자열 : 앞에서 부터 문자열을 찾음
?문자열 : 뒤에서 부터 문자열을 찾음
n : 뒤로 검색
N : 앞으로 검색

바꾸기

:%s/exist/new: 각 행의 처음 나오는 exist를 찾아 new로 바꿈
:%s/exist/new/g: 모든 exist를 찾아 new로 바꿈
:%s/exist/new/gc: 모든 exist를 찾아 new로 바꾸기 전에 물어봄

되돌리기/재실행

u : 이전으로 되돌리기 (Undo)
Ctrl + r : 되돌리기한 것을 다시 실행 (Redo)

행번호

:set number: 행번호를 출력 (간단하게 :set nu)
:set nonumber: 행번호를 숨김 (간단하게 :set nonu)

경로

:cd: 현재 디렉토리를 출력

출처 : https://mryeo.tistory.com/43#google_vignette

post-custom-banner

0개의 댓글