맞는데 왜 틀릴까..?

Linux

[리눅스] 시스템 프로그래밍 환경 - vi

안도일 2022. 10. 14. 20:23

vi

 

vi의 동작 모드

 

1. 명령 모드 - 커서 이동, 페이지 이동, 글자 삭제, 줄 삭제 등

2. 입력 모드 - 입력한 내용이 버퍼로 옮겨져 추가, 수정됨

3. 마지막행 모드 - 검색, 저장, 바꾸기, 줄 이동 등

 

 

명령 모드 명령어

 

k : 위

j : 아래

l : 오른쪽

h : 왼쪽

 

x : 커서 위치의 문자 삭제 

X : 커서 바로 앞 글자 삭제

D : 커서 위치부터 줄 끝까지 삭제

u : 방금 수행한 명령 취소

U : 해당 줄의 모든 편집 취소

dd : 커서 위치의 줄 삭제 (버퍼에 잘라내기)

dw : 커서 위치의 단어 삭제

 

숫자 : 모든 명령어에는 숫자를 붙일 수 있으며, 해당 숫자만큼 명령어 수행 반복 ex) 3x -> 명령어 x를 3번 반복

 

 

yw : 현재 커서가 위치한 단어를 복사

yy : 현재 행을 버퍼로 복사

p : 현재 행 다음에 버퍼 내용 삽입

P :  현재 행 위쪽에 버퍼 내용을 삽입

 

 

버퍼

 

vi는 작업 내용을 버퍼에 저장 - 실행 취소 가능

복사하기, 잘라내기에 사용함

 

ex) "a3yy -> 현재 행부터 아래로 3줄을 a버퍼에 저장

      "ap -> a버퍼의 내용을 붙이기

 

 

 

마지막행 모드 명령어

 

:#y : #으로 지정한 행을 복사 ex) :10y -> 10행을 복사

:<범위> y : 범위로 지정한 행을 복사 ex) :10,20y -> 10~20행  복사

 

:#d : #으로 지정한 행을 삭제 ex) :10d -> 10행을 삭제

:<범위> d : 범위로 지정한 행을 복사 ex) :10, 20d -> 10~20행 삭제

 

:pu : 현재 행 다음에 버퍼 내용 붙이기

:#pu : #으로 지정한 행 다음에 버퍼 내용 붙이기 ex) :5pu

 

 

마지막 행 모드에서의 범위 지정

1,$ : 처음부터 끝까지

% : 처음부터 끝까지

1,. : 처음부터 현재까지

.,$ : 현재부터 끝까지

.-2 : 현재부터 앞쪽 2번째 줄까지

 

 

검색 기능

/문자열 : 현재 위치부터 파일의 아래 방향으로 문자열 탐색

?문자열 : 현재 위치부터 파일의 위 방향으로 문자열 탐색

n : 다음 문자열 탐색 - /문자열은 아래로 이동, ?문자열은 위로 이동

N : n과 역방향으로 문자열 탐색

 

바꾸기 기능

:s/문자열1/문자열2/ : 커서가 위치한 줄에서만 문자열1을 문자열2로 바꿈

:<범위>s/문자열1/문자열2/ : <범위> 안의 모든 줄에 대해서 각 줄의 첫번째 문자열1을 찾아 문자열2로 바꿈

:<범위>s/문자열1/문자열2/g: <범위> 안의 모든 줄에 대해서 모든 문자열1을 문자열2로 바꿈

:<범위>s/문자열1/문자열2/gc: <범위> 안의 모든 줄에 대해서 모든 문자열1을 문자열2로 바꿀 때 물어봄