分页: 1 / 1

vim 超复杂查找替换3(已解决)

发表于 : 2009-06-30 15:51
hjjdebug
前两个都用宏解决了,第三个是不是也能用宏?! 我不知道
问题如下:

输入文件:编译过程中,有进入各个目录编译c文件的指示(简化的代码举例)

代码: 全选

    make -C img all
    gcc  -O -c -o img2srec.o img2srec.c
    gcc  -O  -o img2srec img2srec.o
    strip img2srec
    make -C img\tools all
    gcc -g  -O -c -o mkimage.o mkimage.c
    gcc -g  -O -c -o crc32.o crc32.c
    gcc  -O  -o mkimage mkimage.o crc32.o
    strip mkimage
    gcc -g  -O -c -o envcrc.o envcrc.c
    gcc  -O -o envcrc envcrc.o crc32.o environment.o
    gcc -g  -O -c -o gen_eth_addr.o gen_eth_addr.c
    gcc  -O  -o gen_eth_addr gen_eth_addr.o
    make -C img\logo all
    strip gen_eth_addr
    gcc  -O -c -o bmp_logo.o bmp_logo.c
    gcc  -O  -o bmp_logo bmp_logo.o
    gcc  -O -c -o bmp_logo.o bmp_logo2.c
    gcc  -O  -o bmp_logo2 bmp_logo2.o
输出文件:各个目录下的c 源文件名

代码: 全选

img:
    img2srec.c
img\tools:
    mkimage.c
    crc32.c
    envcrc.c
    gen_eth_addr.c
img\logo:
    bmp_logo.c
    bmp_logo2.c
原来对此问题,我是用perl 来解决。
如果直接用vim 编辑,如果只有一个目录,自然好编辑,如果多个目录,感觉不太好处理,难道需将
原文件折成多个文件再处理吗? 或者/ 能支持范围查找就好了。
说不定strange, poet 又能出奇招。欢迎指教,也欢迎其它同仁讨论,指教。

Re: vim 超复杂查找替换3

发表于 : 2009-06-30 16:21
Strange
这个不就是简单的替换吗

1 删掉所有不包含make|.c的行
2 有.c的行里,把xxxx.c之外的东西替换掉
3 make的行里,把目录以外的东西替换掉

Re: vim 超复杂查找替换3

发表于 : 2009-06-30 17:06
hjjdebug
果然不出所料,我怎么就没想到呢?
现在给出strange 提示下的一个答案。哎! 我是试了老半天才通过了。
如果有更好的,欢迎补充
%!grep "make\|.*\.c"
%s/^.*make \-C \([a-zA-Z\\]\+\).*$/\1:/
%s/^.* \(.*\.c\)/\t\1/

Re: vim 超复杂查找替换3

发表于 : 2009-06-30 17:23
Strange
第一行可以用g命令的
:g!/make\|\.c/d

Re: vim 超复杂查找替换3

发表于 : 2009-06-30 17:33
hjjdebug
strange 真乃我的良师益友!

Re: vim 超复杂查找替换3(已解决)

发表于 : 2009-06-30 17:42
hjjdebug
三个问题! 很高兴! 很高效!
:em09 :em11

Re: vim 超复杂查找替换3(已解决)

发表于 : 2009-07-03 15:34
starwing
看来咱错过了很多好玩的东西了……