vi 에디터

난1렙이요·2024년 9월 15일

시스템 프로그래밍

목록 보기
2/22

사용 방법

vi는 리눅스 터미널에서 사용하는 대표적인 문서 편집기다.
vi는 2가지 모드가 있다.

  • insert : 편집이 가능하다.
  • edit : 편집이 불가능하다.

그냥 vi를 사용하면 edit모드로 들어가게 된다. vi test.txt처럼 말이다. 여기서 insert모드로 변경하는 가장 간단한 방법은 i키를 누르는 것이다. 다시 edit모드로 변경하려면 esc키를 누르면 된다.

vi의 명령어는 :으로 시작하는 명령어가 있고, 그냥 키보드를 눌러서 명령하는 인라인 명령어가 있다.

vi의 콜론 명령어

  • :w : 파일을 저장하는 명령어다. 뒤에 이름을 지정하여 "다른 이름으로 저장"을 할 수 있다.
  • :w! : 강제 저장으로, 다른 이름으로 저장을 할 때 겹치는 이름이 있을 경우 덮어쓰기 하는 용으로 사용한다.
  • :r : 파일을 읽는 명령어다. 뒤에 이름을 지정하여 파일의 내용을 지금 문서에 추가할 수 있다.
  • :f : 파일에 대한 여러가지 정보를 주는 명령어다. 파일이 몇 줄이며, 커서가 어디있는지를 알려준다.
  • :q : 에디터를 나간다.
  • :x : 변경사항이 있을 때만 저장한다.

인라인 모드의 명령어

인라인 모드의 명령어의 기본 포맷은 다음과 같다.

ncm
n : 명령어를 몇 번 반복할 것인가?
c : 무슨 명령어를 실행할 것인가?
m : 명령어를 적용하는 범위는 어디까지인가?

예시로, 3dw라는 명령어를 입력하면, 3개의 character를 지운다는 뜻이며, dW는 띄어쓰기로 구분된 단어를 지운다는 뜻이다.

지우는 명령어

  • d : 이 라인을 지운다.
  • w : 특수문자로 구분되는 단어 하나를 지운다.
  • W : 띄어쓰기로 구분되는 단어 하나를 지운다.
  • } : paragraph단위로 지운다.
  • ^ : 현재 커서에서부터 라인의 앞쪽을 모두 지운다.
  • /pattern : 입력한 검색어가 나올때까지 지운다.
  • n : 위의 명령어과 같이 쓰는 명령어로, 같은 검색어가 나올때까지 지운다.
  • fa(문자) : a라는 문자가 나올때까지 그 줄을 지운다
  • ta(문자) : a라는 문자가 나올때까지 지우지만, a는 남겨놓는다.
  • nx : 뒤에 있는 문자를 n만큼 지운다.
  • nX : 앞에 있는 문자를 n만큼 지운다.

교체하는 명령어

  • rx : 현재 자리에 있는 문자를 x문자로 바꾼다.
  • Rtext : 커서 위치부터 뒤에 있는 문자를 text로 바꾼다. 컴퓨터에 있는 INSERT키와 동일한 역할을 한다.
  • cd : 커서 위치부터 뒤에 있는 문자를 지우고 바꾼다.

r을 누르면 현재 커서 뒤부터 라인을 분리하며, J키를 누르면 아래 라인과 지금 라인을 합친다.

네비게이션 명령어

  • h,j,k,l : 왼쪽, 아래, 위, 오른쪽으로 커서를 움직인다.
  • w,W : 다음 단어로 커서를 이동시킨다. 처음으로 이동시킨다.
  • e,E : 다음 단어로 커서를이동시킨다. 끝으로 이동시킨다
  • (,) : 마침표를 기준으로 커서를 이동시킨다.
  • {,} : paragraph단위로 커서를 이동시킨다.
  • 0,$ : 0은 처음 그 줄의 처음, $은 그 줄의 마지막으로 커서를 이동시킨다.
  • ^ : 그 라인의 빈칸이 아닌 처음으로 커서를 이동시킨다.
  • n| : n에 해당되는 Column으로 이동시킨다.

검색 명령어

|text : 현재 커서 위치에서 뒤로 검색어를 찾는다.
?text : 현재 커서 위치에서 앞으로 검색어를 찾는다.
n : 다음 검색어의 위치로 이동을 한다.
N : 다음 검색어(|나 ?의 반대 방향)의 위치로 이동을 한다.

복사, 붙여넣기 명령어

[n]Y or : n개의 줄을 복사한다.
[n]ym : 복사하려는 범위를 m을 통해서 지정한다.
P,p : 복사한 내용을 붙여넣는다. P는 지금의 줄 위에 붙여넣고, p는 아래에 붙여넣는다.

교체 명령어

:[address]s/old/new/[g]
address : 어디 범위까지 지정을 해서 교체할 것인가?

  • n : 주어진 줄
  • n,m : n줄 부터 m줄 까지
  • 1,. : 첫번째줄부터 지금 줄 까지
  • .,$ : 지금 줄 부터 마지막 줄 까지
  • 1,$ or % : 문서 전체
profile
다크 모드의 노예

0개의 댓글