我正在尝试将所有文本中的所有文本更改为6个字符,然后更改为6个字符~1 p.e。
c:\ program files \ vim directory \ vim73 \ to
C:\ PROGRA〜1 \ vimdir〜1 \ vim73
我找到了一种方法来找到“\ \”之间的字符串长度 strlen(matchstr(“c:\ program files \ vim directory \ vim73 \”,“\\\ zs。* \ ze \\”))
但我怎样才能循环一个字符串?
如何将其剪切为6个字符(如果存在则删除空格)并在其后面加上“~1”?
答案 0 :(得分:1)
我认为这个正则表达式可以解决这个问题:
:%s /\\\([^\\]\{6\}\)[^\\]*/\\\1\~1\\/g
它实质上意味着:匹配\
的两个出现或\
的一个出现和换行符之间的前6个字符。请记住这些字符(\( ... \)
用于记住)并匹配其他所有字符,直到分隔符(换行符或\
)。用前6个字符替换~1
。
答案 1 :(得分:1)
这似乎适用于您的示例文本,但我不确定它是否适用于所有情况(假设您的文件名在其自己的行上,您可以将其修改为更具体,否则):
:s# ##ge|s#\v\\\zs(\w{6}).{-}\ze\\#\1\~1#&
编辑:注意到这会留下一个斜杠。如果你想要删除它,你可以使用以下代码:
:s# ##ge|s#\v\\\zs(\w{6}).{-}\ze\\#\1\~1#&|s#\\$##&