Linux - VI(범위지정, 치환, 다중 파일 편집)

2021. 7. 20. 13:58Linux

저번 시간 - Linux - VI(입력, 삭제, 복사, 붙여넣기)   

이번 시간에는 나머지 VI의 세부기능들을 대해 알아보겠습니다

 

1. 범위지정

%, $, .(마침표)

%, $: 마지막 행을 의미합니다

주의 %은 단독으로 사용해도 처음부터 마지막까지의 행을 의미하지만 $은 시작을 의미하는 키(예를 들어 1, .(마침표))와 함께 사용해야합니다.

:%y = 처음부터 마지막행까지를 복사합니다.  :$y = 이렇게 사용은 불가능합니다.

:%y, :1,%y = 둘다 가능  :$y = 불가능 :1,$y = 가능 :.$y = 가능

.(마침표) : 현재 커서의 행을 의미합니다

 

1,% : 1행부터 마지막 행까지를 의미합니다

1,. : 1행부터 현재 커서의 행까지를 의미합니다

1,%y : 1행부터 마지막 행까지를 복사합니다

.,$d : 현재 커서의 행부터 마지막 행까지 삭제합니다

:12,13d : 12행과 13행을 삭제합니다

 

좌 :.,$y 현재 커서의 행부터 마지막 행까지 복사  우 p 복사

 

*  :set number(set num) : 문서에서 커서가 있는 행이 몇번 째 행인지 궁금할 때 사용하는 명령어 입니다.

이 명령어를 사용하면 범위 지정을 좀더 손 쉽게 할 수 있습니다.

 

 

2. 치환

:%s/검색 문자열/바꾸고자 하는 단어/g

:%s/my/your/g

% : 위에서 배운 범위인 처음부터 마지막행까지라는 의미입니다. 

s : 치환 작업을 하겠다는 키입니다.

/my/your : my라는 단어를 your로 치환하겠다는 의미입니다.

g : 전체를 의미합니다.

치환 작업은 매 행마다 검색 문자열 하나씩 실행됩니다. 여기서 전체를 의미하는 g를 사용하지 않으면

각 행마다 첫번째 검색 문자열만 치환되게 됩니다.

 

g를 사용하지 않았을 경우 각 행의 첫번째 검색 문자열만 바뀐것을 알 수 있습니다.

 

g를 사용하자 모든 검색 문자열들이 치환된것을 볼 수 있습니다

 

3. 다중 파일 편집

지금까지는 하나의 파일을 열어서 수정 했습니다. 이번에는 한 번에 하나 이상의 파일을 수정하는 방법을 알아 보겠습니다. 

지금까지와 별 다른것이 없습니다. 'vi 파일명 파일명' 열고자 하는 파일들을 연속해서 적어주면 됩니다.

vi이 실행되면 첫번째 파일 즉 apple 파일이 화면에 나옵니다. :n을 입력하면 다음 파일인 food 파일로 전환이 되고

다시 이전 파일로 되돌아가려면 :N을 입력하면 됩니다

* 만약 파일을 수정후 다른 파일로 전환하고 싶다면 꼭 저장을 해야합니다.

apple 파일을 수정을 했으면 저장을 해야 food 파일로 전환할 수 있습니다.

 

:sh : Vi 작업을 하다가 :sh 명령어를 치면 shell에서 작업을 할 수 있습니다. exit 해주면 다시 VI 작업 환경으로 돌아옵니다.

:r 파일명 : 현재 작업중인 파일에 다른 파일을 커서 위치에 불러 올 수 있습니다. 

:e 파일명 : 다른 파일로 이동 할 수 있습니다.  * 다른 파일로 이동중 현재 작업중이던 파일은 꼭 저장을 해야 합니다.

 

vi 환경에서 파일을 작업하다가 :sh 명령어를 통해 shell환경으로 전환 했습니다.

 

shell 환경에서 food 파일 내용을 확인 해 보았습니다.

(food 파일을 apple 파일로 불러오기 전에 내용 확인을 한 것입니다.)

 

exit 명령어를 통해 다시 apple 파일(VI 환경)으로 돌아갔습니다.

 

 

:r  food 명령어로 food 파일을 불러왔습니다. 아까 shell에서 확인한 내용과 같은것을 확인 할 수 있습니다.

 

다른 파일로 이동할 려고 했지만 저장을 안했기 때문에 경고 문구가 떴습니다. 다른 파일로 이동전에는 꼭 저장을 해야합니다

 

food 파일로 이동 성공 여기서 다시 :e apple을 하시면 apple 파일로 이동 할 수 있습니다

 

이상으로 VI에 대한 전반적인 내용을 공부 해보았습니다. 이후 VI에 대해 추가할 내용이나 수정할 내용이 있으면 수정 하도록 하겠습니다

 

'Linux' 카테고리의 다른 글

Linux - 디렉터리 & 파일(2)  (0) 2021.07.22
Linux - 디렉터리 & 파일(1)  (0) 2021.07.22
Linux - VI(입력, 삭제, 복사, 붙여넣기)  (0) 2021.07.19
Linux - VI란?  (0) 2021.07.19
Linux - gedit & nano  (2) 2021.07.12