分页: 1 / 1

Vim 如何只替换选择区里的内容?

发表于 : 2010-12-14 6:46
wz520
比如有下面2行文本
abccddccd
acbcdecee
用 v 如下选中文本(用[]表示)
abcc[ddccd
acbcd]ecee
我想只替换选区里的 c 为 x,用 :'<,'>s/c/x/g ,但是发现 Vim 将所有的 c 全替换了
将 flag 里的g去掉只会替换每行的第一个。
'<,'> 代表选区的开始和结束,理论上应该只替换选区的内容吧?为什么会把整行都替换了呢?有没有办法只让它替换选区里的内容?

Re: Vim 如何只替换选择区里的内容?

发表于 : 2010-12-14 9:01
eexpress
选择后,直接:%s按<>自动有

Re: Vim 如何只替换选择区里的内容?

发表于 : 2010-12-14 12:29
lilydjwg
s 命令是针对行操作的。

vis可以把作用范围限制在选区中。

Re: Vim 如何只替换选择区里的内容?

发表于 : 2010-12-15 0:54
wz520
lilydjwg 写了:s 命令是针对行操作的。

vis可以把作用范围限制在选区中。
果然有用,感谢解答! :em01

Re: Vim 如何只替换选择区里的内容?

发表于 : 2018-11-08 16:38
scutdk
不是挖坟啊,实在是碰到这个问题了。
用了这么久vim,第一次发现有这个问题。
我补充说明下,3楼版主说的vis是vim的一个插件,开始半天没明白,我以为是自带的一个命令
vis插件主页:https://github.com/vim-scripts/vis

也可以%V来进行替换
上面的例子中就是:'<,'>s/\%Vc/x/g
参考https://vi.stackexchange.com/questions/1922/replace-in-visual-selection