vim编辑器,如何能够简单描述替换成某相同字符\{N}次的要求?

比如如下命令(全文查找a并替换成8个b)::%s/a/bbbbbbbb/g後面的替换多次实在太繁琐,有没有类似正则一样的规则形成以下形式替换语法?:%s/a/b\{8}/... 比如如下命令(全文查找a并替换成8个b):
:%s/a/bbbbbbbb/g
後面的替换多次实在太繁琐,有没有类似正则一样的规则形成以下形式替换语法?
:%s/a/b\{8}/g
不是正则也行,只要能够形成简单的描述次数的形式就行,这样即使替换100次甚至更多,命令也不会很长.
上面忘说了,後面的替换内容无法用正则代替,所以上面那个正则规则只是一个简略描述替换相同字符多次的假设形式,但其实并没有效.
展开
 我来答
eagle71106
2013-07-08 · TA获得超过378个赞
知道小有建树答主
回答量:147
采纳率:0%
帮助的人:142万
展开全部

我来回答

第一:定义一个函数

function! DumpChar(c,count)
    let Count=a:count
    let ret=''
    while Count>0
        let ret=ret.a:c
        let Count=Count-1
    endwhile
    return ret
endfunction

这个函数可以返回一个字符串,这个字符串是由count个c构成的,比如你要生成8个b,就是DumpChar('b',8)


第二:使用替换命令

:s/a/\=DumpChar('b',8)/

这样就可以把字符'a'替换成8个'b‘了,假如要把'a'替换成16个'c',只要执行

:s/a/\=DumpChar('c',16)/


说明:函数定义也是在命令模式下输入的,先打个冒号然后输入函数中的每一行,输完一行就按回车,可以看下我的截图



PS:最近痴迷vim编辑器,所有对它有了入门级的体会。^_^

追问
追送200分
不知详解
2013-07-07 · 知道合伙人软件行家
不知详解
知道合伙人软件行家
采纳数:609 获赞数:2252
自学计算机。

向TA提问 私信TA
展开全部

没有你说的那种表达式。但是可以使用递归替换。

:let @a="%s/a/ba/g\<enter>"
5@a
:%s/a//g
  1. 第一句句实际上就是把寄存器 a 设置为替换命令 把 a 替换成 ba。你可以参考 :help q 。他解释宏记录命令。

  2. 第二句执行 5次 替换命令。a 就变成了 bbbbba  。你也可以 100@a 替换成100个b。但是效率就比较差了。高效率的方案就是用代码生成 替换字符串。你懂的!。

  3. 第三句删除 a 只剩下 bbbbb

追问
囧,这种方法看起来好麻烦的样子.
追答
看你自己需要了。   复杂的功能就需要复杂的代码。 而且这里的代码只有3行。不要忘记采纳哈。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hqxz556
2013-07-08 · TA获得超过2831个赞
知道大有可为答主
回答量:1686
采纳率:93%
帮助的人:581万
展开全部

使用内部函数可以方便的生成这样的字符串:

%s/a/\=repeat('b',8)/g
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式