根据Vim中的匹配计数追加字符

vom3gejh  于 2023-01-30  发布在  其他
关注(0)|答案(1)|浏览(194)

我想在每一个匹配的单词的末尾附加-,但是,附加的-的数目应该基于匹配的计数,这样行中的字符总数保持不变。
如下例所示,字符总数应为6。
例如:

ab
xyz
abcde

上述案文应改为:

ab----
xyz---
abcde-
ee7vknir

ee7vknir1#

可以使用\=替换为表达式,请参见:h sub-replace-expression
当替换字符串以\=开头时,余数被解释为表达式。
submatch()函数可用于获取匹配文本。整个匹配文本可通过submatch(0)访问。文本与第一对()submatch(1)匹配。()中的进一步子匹配也是如此。
所以你可以这样实现它:

:[range]s//\=submatch(0) . repeat('-', 6-strlen(submatch(0)))/

相关问题