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

Vim、Emacs配置和使用
回复
wz520
帖子: 36
注册时间: 2010-09-23 13:47
送出感谢: 0
接收感谢: 4 次

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

#1

帖子 wz520 » 2010-12-14 6:46

比如有下面2行文本
abccddccd
acbcdecee
用 v 如下选中文本(用[]表示)
abcc[ddccd
acbcd]ecee
我想只替换选区里的 c 为 x,用 :'<,'>s/c/x/g ,但是发现 Vim 将所有的 c 全替换了
将 flag 里的g去掉只会替换每行的第一个。
'<,'> 代表选区的开始和结束,理论上应该只替换选区的内容吧?为什么会把整行都替换了呢?有没有办法只让它替换选区里的内容?
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙
送出感谢: 4 次
接收感谢: 256 次

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

#2

帖子 eexpress » 2010-12-14 9:01

选择后,直接:%s按<>自动有
● 鸣学
头像
lilydjwg
论坛版主
帖子: 4163
注册时间: 2009-04-11 23:46
系统: Arch Linux
送出感谢: 11 次
接收感谢: 127 次
联系:

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

#3

帖子 lilydjwg » 2010-12-14 12:29

s 命令是针对行操作的。

vis可以把作用范围限制在选区中。
wz520
帖子: 36
注册时间: 2010-09-23 13:47
送出感谢: 0
接收感谢: 4 次

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

#4

帖子 wz520 » 2010-12-15 0:54

lilydjwg 写了:s 命令是针对行操作的。

vis可以把作用范围限制在选区中。
果然有用,感谢解答! :em01
scutdk
帖子: 299
注册时间: 2009-07-25 19:23
送出感谢: 3 次
接收感谢: 0

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

#5

帖子 scutdk » 2018-11-08 16:38

不是挖坟啊,实在是碰到这个问题了。
用了这么久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

Ubuntu 桌面培训- 全中文官方文档,含汉化截图,提供PDF
回复

回到 “Vim和Emacs”