在视觉选择中替换的小错误?
Minor bug in substituting within a visual selection?
确实没有理由做下面的事情(我这样做只是因为我没有考虑清楚),但它可能代表在视觉选择中执行的替换中的错误。
视觉选择 (v
) 少于一行长度的文本,并开始替换 (:s
),并添加视觉选择原子 (\%V
) ,并选择包罗万象的正则表达式 (.*
),替换字符串将类似于:
:'<,'>s/\%V.*/ /
(此处,将所有内容替换为单个 space)。我期望的是视觉选择内的所有内容都被单个 space 替换,但实际上,整行,包括视觉选择之外的所有内容,都被替换了。所有其他替换仅限于选择(例如 \a*
或只是 .
)
我知道 Vim 正则表达式原子以及视觉选择的描述符('<
与 `<
)有一些微妙之处,所以我不确定是否这是预料之中的。如果是预期的,请告诉我。如果不是,那当然没什么大不了的,因为有很多更好的方法可以做完全相同的事情,但我仍然会继续 post 到 vim_dev。
来自:help %V
To make sure the whole pattern is inside the Visual area put it at the start and end of the pattern
'<,'>s/\%V.*\%V./ /
应该可以。注意额外的点,这是因为 vim 出于某种原因排除了选择的最后一个字符。
确实没有理由做下面的事情(我这样做只是因为我没有考虑清楚),但它可能代表在视觉选择中执行的替换中的错误。
视觉选择 (v
) 少于一行长度的文本,并开始替换 (:s
),并添加视觉选择原子 (\%V
) ,并选择包罗万象的正则表达式 (.*
),替换字符串将类似于:
:'<,'>s/\%V.*/ /
(此处,将所有内容替换为单个 space)。我期望的是视觉选择内的所有内容都被单个 space 替换,但实际上,整行,包括视觉选择之外的所有内容,都被替换了。所有其他替换仅限于选择(例如 \a*
或只是 .
)
我知道 Vim 正则表达式原子以及视觉选择的描述符('<
与 `<
)有一些微妙之处,所以我不确定是否这是预料之中的。如果是预期的,请告诉我。如果不是,那当然没什么大不了的,因为有很多更好的方法可以做完全相同的事情,但我仍然会继续 post 到 vim_dev。
来自:help %V
To make sure the whole pattern is inside the Visual area put it at the start and end of the pattern
'<,'>s/\%V.*\%V./ /
应该可以。注意额外的点,这是因为 vim 出于某种原因排除了选择的最后一个字符。