[완료] VIM 질문입니다 (치환 관련)
글쓴이: tiffang / 작성시간: 수, 2007/02/07 - 10:41오전
안녕하세요
어떤 BRAIN DAMAGED 한 사람(들?) 이
다음과 같은 방식으로 디버깅 트레이스 출력 매크로를 다음처럼 해 놓았습니다.
#define PRINT(X) printf(X)
PRINT((TEXT("TEST %d\n"), 1));
매크로 함수의 인자가 1개라 PRINT 함수 내부안에 모두 괄호로 쳐놓는 짓을 해 놓았는데요.. -_-;;
PRINT 안에 괄호는 분명 오류라, 괄호를 하나 까내고 싶은데
:g/expression/s/... 로 바꾸면
PRINT( (TEXT("..."),
...));
위에 처럼 중간에 엔터가 들어간 것은 못 바꿉니다.
어떻게 하면 중간에 엔터가 들어간 것을 포함해
PRINT((X)); 를 PRINT(X) 로 바꿀 수 있을까요??
Forums:
아.. 꼭 vim 이 아니라도 한방에 치환할 수 있는 방법을 알려주셔도..
다른 툴을 사용하는 방법이라도 알려주세요..
%s/PRINT(\(.*\n[^;]\+\));/PRI
%s/PRINT(\(.*\n[^;]\+\));/PRINT\1;/gc
\n 이 안되면 \r로 바꾸어 해보면 될겁니다.
-----------------------
과거를 알고 싶거든 오늘의 네 모습을 보아라. 그것이 과거의 너니라.
그리고 내일을 알고 싶으냐?
그러면 오늘의 너를 보아라. 그것이 바로 미래의 너니라.
고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"
vim 기능중에
vim 기능중에 대응되는 괄호로 이동하는 단축키가 있습니다.
% <- 요건데요~
요걸 응용해 보시면 좀 더 쓸만한 결과가 나오지 않을까 싶습니다.
PRINT 바로 뒤의 (에 커서를 두고 v%J 하니 한 줄로 합쳐 지네요.
nainu in wonderland.
후후훗.. 훌륭합니다!!
(.*\n[^;]\+
그럼
엔터가 있는 것두 바꾸고 없는 것두 바꿀려먼
.... 어케 해야 할까염??
abcdefghi abc defghi abc
abcdefghi
abc
defghi
abc defghi
0,$ s/abc\(\n\?\|.*\)def/ABCDEF/g
ABCDEFghi
ABCDEFghi
ABCDEFghi
-----------------------------------------------------------------------
오늘 우리는 동지를 땅에 묻었습니다. 그러나 땅은 이제 우리들의 것입니다.
아직도 우리의 적은 강합니다. 그러나 우리는 그들보다 많습니다.
항상 많을 것입니다.
오늘 우리는 동지를 땅에 묻었습니다. 그러나 땅은 이제 우리들의 것입니다.
아직도 우리의 적은 강합니다. 그러나 우리는 그들보다 많습니다.
항상 많을 것입니다.
%은 moving 관련이고.. 치환 관련 질문입니다~~
자 도전과제는 바로 위에 글!!
저두 지금 하고 있어염~~ ㅋㅋ
match-paren으로 잘
match-paren으로 잘 되는데...-ㅂ-;;
0f(a<CR><ESC>k0f(v%J$2F)x02f(xj
이걸 PRINT( 가 있는 줄에 커서를 두고 쓰면 됩니다.
map으로 만들어서 n.n.n.n.n.n. 하시면 되겠네요.
수정: 아! 한방에 를 놓쳤군요.ㅎㅎ 위엣분들 답변 참고하시면 쉽게 될듯합니다
nainu in wonderland.
@.@
match-paren.. 공부해 봐야 겠네염
왠지 해두면 편할 듯 안 필이 옵니다..
여러 라인을 포함할 때는
아래와 같은 코드가 있을 때
PRINT((X));
abcd(X);
PRINT((X)
);
vim 에서 아래와 같이 실행하면 PRINT의 ()를 하나 까버립니다.
:%s/PRINT(\(\_.\{-}\));/PRINT\1;/
결과는
PRINT(X);
abcd(X);
PRINT(X)
;
감사합니다..
덕분에 몇시간 걸릴 일을 뚝딱~~
\_ 좋네염..
\_ 를 동네 방네 소문내고 싶습니다.
\_ 가 해석이
\_ 가 해석이 안돼는군요....
:%s/PRINT(\(\_.\{-}\));/PRINT\1;/
그리고 {2} 같은경우는 두번 반복의 의미라고 알고 있는데...
{-} 경우는 모두 다 란 뜻인가요?
그리고 윗의 문장을 그대로 sed 같은 것에서 써먹을수 있는건가요?
이글이 도움이 될것 같습니다.
http://kldp.org/node/25438#comment-61551
아..감사합니다.... 근
아..감사합니다....
근데...vi 에서는 잘 되는데....
sed에서는 일단 줄바뀜 문자가 \n 여서 대치해서 사용해 봤지만 잘안돼는군요ㅠㅠ
댓글 달기