[완료] VIM 질문입니다 (치환 관련)

tiffang의 이미지

안녕하세요
어떤 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) 로 바꿀 수 있을까요??

tiffang의 이미지

다른 툴을 사용하는 방법이라도 알려주세요..

Fe.head의 이미지

%s/PRINT(\(.*\n[^;]\+\));/PRINT\1;/gc

\n 이 안되면 \r로 바꾸어 해보면 될겁니다.
-----------------------
과거를 알고 싶거든 오늘의 네 모습을 보아라. 그것이 과거의 너니라.
그리고 내일을 알고 싶으냐?
그러면 오늘의 너를 보아라. 그것이 바로 미래의 너니라.

고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"

nainu의 이미지

vim 기능중에 대응되는 괄호로 이동하는 단축키가 있습니다.
% <- 요건데요~
요걸 응용해 보시면 좀 더 쓸만한 결과가 나오지 않을까 싶습니다.
PRINT 바로 뒤의 (에 커서를 두고 v%J 하니 한 줄로 합쳐 지네요.

nainu in wonderland.

tiffang의 이미지

(.*\n[^;]\+

그럼

엔터가 있는 것두 바꾸고 없는 것두 바꿀려먼
.... 어케 해야 할까염??

crimsoncream의 이미지

abcdefghi
abc
defghi
abc defghi

0,$ s/abc\(\n\?\|.*\)def/ABCDEF/g

ABCDEFghi
ABCDEFghi
ABCDEFghi

-----------------------------------------------------------------------
오늘 우리는 동지를 땅에 묻었습니다. 그러나 땅은 이제 우리들의 것입니다.
아직도 우리의 적은 강합니다. 그러나 우리는 그들보다 많습니다.
항상 많을 것입니다.

오늘 우리는 동지를 땅에 묻었습니다. 그러나 땅은 이제 우리들의 것입니다.
아직도 우리의 적은 강합니다. 그러나 우리는 그들보다 많습니다.
항상 많을 것입니다.

tiffang의 이미지

자 도전과제는 바로 위에 글!!
저두 지금 하고 있어염~~ ㅋㅋ

nainu의 이미지

match-paren으로 잘 되는데...-ㅂ-;;

0f(a<CR><ESC>k0f(v%J$2F)x02f(xj
이걸 PRINT( 가 있는 줄에 커서를 두고 쓰면 됩니다.
map으로 만들어서 n.n.n.n.n.n. 하시면 되겠네요.

수정: 아! 한방에 를 놓쳤군요.ㅎㅎ 위엣분들 답변 참고하시면 쉽게 될듯합니다
nainu in wonderland.

tiffang의 이미지

match-paren.. 공부해 봐야 겠네염
왠지 해두면 편할 듯 안 필이 옵니다..

impactbar의 이미지

아래와 같은 코드가 있을 때

PRINT((X));
abcd(X);
PRINT((X)
);

vim 에서 아래와 같이 실행하면 PRINT의 ()를 하나 까버립니다.
:%s/PRINT(\(\_.\{-}\));/PRINT\1;/

결과는
PRINT(X);
abcd(X);
PRINT(X)
;

tiffang의 이미지

덕분에 몇시간 걸릴 일을 뚝딱~~

tiffang의 이미지

\_ 를 동네 방네 소문내고 싶습니다.

doodoo의 이미지

\_ 가 해석이 안돼는군요....

:%s/PRINT(\(\_.\{-}\));/PRINT\1;/

그리고 {2} 같은경우는 두번 반복의 의미라고 알고 있는데...
{-} 경우는 모두 다 란 뜻인가요?

그리고 윗의 문장을 그대로 sed 같은 것에서 써먹을수 있는건가요?

doodoo의 이미지

아..감사합니다....
근데...vi 에서는 잘 되는데....
sed에서는 일단 줄바뀜 문자가 \n 여서 대치해서 사용해 봤지만 잘안돼는군요ㅠㅠ

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.