4. 복수의 문자열을 하나의 문자열로 바꾸기
이것은 결국 위의 정규표현식을 사용한 패턴을 특정한 문자열로 바꾸는 것이다. 웬만한 vi 기초 문서에서 간단하게라도 다루는 내용이다.:%s/[vV]i//g - vi 또는 Vi 를 null string 으로 치환한다. 즉 삭제한다.
:%s/<.*>//g - html 화일에서 태그를 제거하는 경우인데, 이렇게 쓰면 내용 라는 줄이 있을 때 죄다 지워질 것이다.
따라서 <.*> 대신에 <.\{-}> 를 쓰는 게 낫다.
::%s/\(gnu\|Gnu\)/GNU/g - gnu 또는 Gnu 를 GNU 로 치환
간단한 것이니 이 정도로 통과.
[edit]5. 복수의 문자열의 복수의 문자열로 바꾸기
사실 이 얘기를 하고 싶었던 것인데... 이것만 덜렁 쓰기가 뭣해서 서론이 장황해졌다.
핵심은, 괄호를 사용하여 찾는 문자열 쪽에 그룹을 지정한 후에, 바꿀 문자열 쪽에서 그 그룹을 부를 수 있다는 것이다.
\0 은 찾은 문자열 전체 \1 은 첫번째 괄호 \2 는 두번째 괄호 \3 은 세번째 괄호 ...
괄호의 순서는 여는 괄호 "(" 의 순서로 따진다. 또 . 나 [list] 등이 괄호안에 있을 경우는 실제로 검색된 문자열을 의미한다는 것에 유의. 즉 abef 라는 스트링이 있고 \(ab\|cd\)ef 로 검색했다면 \1 은 ab 가 된다.
다음과 같은 경우를 생각해 보자. html 화일 안에 수십개의 링크가 다음과 같이 나열되어 있다.
이것을 내가 위키위키 페이지에 옮기려 한다. (사실 위처럼 깔끔하게 되어 있으면 그냥 html 코드를 써도 되겠지만)
* [http://www.aaa.com aaa] * [http://www.bbb.com bbb] * [http://www.ccc.com ccc] ...
다음의 한 줄로 만사형통.
:%s/
관련 링크:


찾기 시 블록 해제하는 방법은?
저같은 경우는 전혀 검색될 문자가 아닌 것들을 타이핑하여 블록을 해제하곤 하는데요
명령어로 존재하는지 궁금하네요.
저도 그냥 /wtfbbq
nohlsearch
:noh를 쓰면 블록이
:set nohlsearch 를
별로 아는 건 없지만
는 전체문서에 적용되는 게 아니고 현재 커서가 있는 줄에만 적용됩니다. 전체 문서에 적용하려면 다음과 같이 해야 합니다.
또는
6번도 마찬가지로 커서가 있는 줄에만 적용되고, 덧붙여서 이 경우에는 다음과 같이 하는게 더 편합니다.
$말고도 여러가지 문자를 쓸 수 있습니다. :나 & 등등. 그리고 u를 눌러 취소했는데(undo), 다시 하고 싶다면 (redo) Ctrl+R을 누르면 됩니다.
--
feel the gravity
줄 뒤 공백문자들 모두 지우기
:%s/[ \n]*//g
:g/^$/d
관련이 있는
이면 어떻게 될까요? (가장 많이 쓰이겠죠)
이렇게 되겠죠.
이 경우는 g 플래그 가 빠진경우는.
마지막 줄의 두번째 etc 는 바뀌지 않겠죠.
% 가 없으면, 커서가 있는 줄만 바뀌겠죠.
처럼 처음의 etc 만 바꾸고 싶을때는 어떻게 하느냐 이것이 안되는 것 같습니다.
물론 줄 번호를 안다면
이런식으로 s 앞에 줄번호를 모르는 경우에는 어떻게 할 방법이 없는 것 같습니다.
로 해당 커서에서 변환하면 되겠지만, 한번에는 안되는 것 같습니다.
.
.
http://www.ranoma.com/board/viewbody.html?code=hard&page=6&number=14697&...=
http://byus.net/jsb/read.php?table=study&no=114&page=1
:/etc/s/etc/var/라고 해
질문 하나
JimyLinux
그런 건 에디터에서보다 grep 으로 해결하시는 게 편합니다.
이런 내용에 대한 숙지도 필요한것이
====================어흥====================
짖지마시고 말씀을 하세요.
:%g!/a/d g : 다음이
g! : 다음의 패턴이 나타나지 않는 줄에 대해 명령을 실행
:v/a/d %는 보통 생략
9번 HTML 태그 문자가 들어가서 안 보이는 것 같네요.
foldl (flip (:)) [] "universe"
위에 소개된 것들이
vi 중독에서 언제나 벗어나려나..
몰랐던 귀한 정보를 알게됐군요..
고수님들 고맙습니다.
..
이나저나 언제쯤 vi 폐인에서 벗어나려는지..
본문에 오류가
Wikipedian
WonYong
그렇군요. 근데
삽입할때는 \r로 넣어야 하는 이유가 있을까요?
이제 겨우 치환과
--------------------------
snowall의 블로그입니다.
http://snowall.tistory.com
수정하면 좋을법한 내용
# d는 delete를 의미합니다.
====================어흥====================
짖지마시고 말씀을 하세요.
일련번호 전부 바꾸기
:%s/\(앗싸\)\(좋구나\)\(108계단\)/\2\3\1/g
'1999년 2월 5일' -> '1999-2-5'
'1999년 2월 5일' -> '1999-02-05'
'1949년 12월 25일' -> '1949-12-25'
'1999년 2월 11일' -> '1999-02-11'
'2011년 12월 3일' -> '2011-12-03'
즉, 0000년 00월 00일 식으로 포맷을 통일시킵니다.
:%s/월 \(\d\)일/월 0\1일/g
'1999년 2월 5일' -> '1999년 02월 05일'
'1949년 12월 25일' -> 동일
'1999년 2월 11일' -> '1999년 02월 11일'
'2011년 12월 3일' -> '2011년 12월 03일'
\(\d\)\(\d\)\(\d\)\(\d\)
\(\d\d\d\d\) 로 하나의 그룹으로 묶는게 나을 것 같습니다.
\d\{1,2\} 와 같이 쓰면 숫자가 1~2개인 경우를 검색하기 때문에
포맷을 통일시키는 일이 필수는 아닙니다.
물론 0000-00-00 꼴에서는 두자리로 표현하는게 더 보기 이쁘긴 하지만...
두번째 질문을 한
:%s/\(\d\{4\}\)\s*년\s*\(\d\{1,2\}\)\s*월\s*\(\d\{1,2\}\)\s*일/\=printf("%4d-%02 d-%02d",submatch(1),submatch(2), submatch(3))/g이런 다양한 방법들이 있다니...
이거.....
좋은 정보 감사합니다.
좋은 팁 감사합니다. 맨뒤의 g나 i같은것 외에도
맨뒤의 g나 i같은것 외에도 다양한 옵션이 있습니다. ( :help s_flags <- p="">->
저는...
를 자주 사용합니당. 그러면 각 "char"에 매칭 되는 단어에서 바꿀지 말지 를 물어보는데
일괄적으로 하는거 보단, 필요한 경우 또는 char 가 다른 단어에 포함되는 단어인 경우 등등
요긴하게 쓰이더라구요
유용한 청보 감사해요
완전 반할뻔... ㅡㅡ;;;;