티스토리 뷰

Computer 일반/VIM

Vim (3) ex 명령어

MathTrauma 2022. 7. 29. 02:11

 

vi 는 ex editor 를 기반으로 합니다.

 

: (콜론) 으로 시작하는 명령어는 ex command 입니다.

 

ex editor 는 line editor 이므로  위치지정자(?) 의미가 vi 명령어와 달라지는 것이 있습니다.

예를 들어 

 

d$

 

는 현재 커서가 위치한 지점에서 그 라인의 끝까지 삭제합니다.

하지만 

 

:$d<ENTER>

 

는 마지막 line 을 지웁니다. $ 의 의미가 line 의 끝에서 마지막 line으로 바뀐 것이죠.

ex 명령어로 현재 행을 지우려면

 

: . d<ENTER>

 

를 하면 됩니다. . (dot) 은 현재 line 을 의미합니다.

 

현재 행을 지우는 것이라면 ex 명령이 훨씬 불편하군요.

어쨌든 기억해야할 위치 지정자는

현재 행(라인)을 뜻하는 . (dot) , 마지막 행을 뜻하는 $ 그리고 파일 전체를 가리키는 % 와 +, - 입니다.

 

+, - 는 현재행을 기준으로 아래행과 위의 행을 나타냅니다. 밑의 예제들에서 용법을 확인하도록 하겠습니다.

 

범위 지정

앞에서 현재 행을 지우는 것은 ex 명령이 불편했었습니다.

그러나 범위를 지정해야 하는 상황이면...

예를 들어 10행에서 20행 까지를 지우고 싶다면 어떨까요?

 

: 10, 20 d

 

를 하면 됩니다. 일반적으로 다음과 같은 형태로 범위를 지정해서 편집 명령을 수행할 수 있습니다.

 

: (시작위치) , (마지막위치) 명령어

 

해당되는 명령어로 유용한 것은 d 외에...

 

1.  m  :  move 명령어 

예를 보죠.

 

: . , $ m 1

 

. (dot) 은 현재 line 이고 $는 마지막 line 을 의미함을 알면 뜻을 유추하는 것은 쉽습니다.

현재 행(라인)부터 파일 끝까지를 1행 뒤로 옮기는 명령이 됩니다.

하나만 더 예를 보죠.

 

: 20, . m $

 

20행부터 현재 커서가 있는 행까지를 잘라내어 파일 마지막으로 옮기라는 뜻이 됩니다.

 

2. co (or t) : copy 명령어

이것도 바로 사용례를 보겠습니다.

 

: 3, 5 co 20

 

3행부터 5행까지를 복사해서 20 행 뒤에 붙이게 됩니다. co 대신 t 를 사용해도 같습니다.

 

: 3, .+2 t $

 

3행부터 현재 행(.) 아래의 2 번째 행까지를 copy 해서 파일의 마지막에 붙입니다.

+ 를 어떻게 사용하는지 이해가 될 겁니다.

사실 . (dot)은 생략해도 됩니다. 

 

: - , + t 0

 

현재 행의 앞, 뒤 행까지 3개의 행을 복사해서 파일의 시작 부분에 붙여 넣습니다.

 

 

Search Patterns

vim 에서 정규식을 이용할 수 있습니다.

/pattern/

의 형태로  다른 ex 명령어들과 함께 사용됩니다.

 

 

명령행을 보시면

: /bl/ d

bl 은 단순 문자열 정규식으로 간주하여 사용할 수 있습니다.

여기서는 마지막의 d 명령어와 결합하여 bl 이라는 문자열을 포함한 첫 번째 행을 지우라는 명령이 됩니다.

 

 

3행이 지워졌군요. 이유는 3행에 있던 blah 의 bl 이 match 되었기 때문이죠.

 

: /pattern/ d

 

는 pattern에 해당되는 문자열을 찾아서 d (delete)를 수행합니다.

예를 하나 더 보겠습니다.

 

: /pattern/ , $ d

 

이 경우는 시작 위치를 pattern 을 찾은 위치로 정했습니다.

pattern에 해당되는 문자열을 가진 첫 행부터 마지막 행까지 삭제 명령입니다.

d 명령 외에 오늘 알아본 m , co , t 등에서도 당연히 seach pattern 을 이용하여 위치 지정 가능합니다.

 

 

반응형

'Computer 일반 > VIM' 카테고리의 다른 글

Vim (2) Register 활용  (0) 2022.07.28
Vim (1) Insert mode 에서 효과적인 삭제  (0) 2022.07.20
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함