能否在vi/vim中替换或删除逗号(或任意字符)?

能否在vi/vim中替换或删除逗号(或任意字符)?,vim,Vim,例如,我有这样的文本: I talked to a friend, I hiked a mountain, I am working with blah blah, 我想删除或替换我爬山了。为什么ci、或di、不起作用?有没有一种方法可以在逗号之间进行抓取、替换或删除?如果你在这样的部分,你可以使用T,ct, 或者,如果你想安装一个插件,比如允许你使用ci、和di、有很多插件可以帮助你创建自定义的文本对象,比如 我在我的vimrc中有以下代码片段已经有很长一段时间了,它从未让我失望过: fo

例如,我有这样的文本:

I talked to a friend, I hiked a mountain, I am working with blah blah, 

我想删除或替换
我爬山了
。为什么
ci、
di、
不起作用?有没有一种方法可以在逗号之间进行抓取、替换或删除?

如果你在这样的部分,你可以使用
T,ct,


或者,如果你想安装一个插件,比如允许你使用
ci、
di、
有很多插件可以帮助你创建自定义的文本对象,比如

我在我的
vimrc
中有以下代码片段已经有很长一段时间了,它从未让我失望过:

for char in [ '_', '.', ':', ',', ';', '<bar>', '/', '<bslash>', '*', '+', '%' ]
  execute 'xnoremap i' . char . ' :<C-u>normal! T' . char . 'vt' . char . '<CR>'
  execute 'onoremap i' . char . ' :normal vi' . char . '<CR>'
  execute 'xnoremap a' . char . ' :<C-u>normal! F' . char . 'vf' . char . '<CR>'
  execute 'onoremap a' . char . ' :normal va' . char . '<CR>'
endfor
['.'、'.'、':'、'.'、';'、''./'、''.*'、'+'、'%'中的字符的

执行“xnoremap i”。字符':正常!T’。查尔vt’。查尔
执行'onoremap i'。字符':正常vi'。查尔
执行“xnoremap a”。字符':正常!F’。查尔vf’。查尔
执行“重新映射a”。字符':正常va’。查尔
外循环
它创建
di、
vi%
ci:
ya
等所需的所有自定义运算符挂起映射

而且添加新的分隔符也很容易


我的
vimrc
中有可爱的笑脸,还有一些插件可以让你创建定制的文本对象。在不安装插件的情况下,假设光标位于两个逗号之间,则可以执行以下操作:

T,c,

要模拟
ci,
对于
di,
将上述
c
更改为
d

相关帮助文档:

:h t
:h T
:h ,

如果您愿意为这个特性修补Vim,那么不久前有一个建议(包括一个主要工作的修补程序)允许您匹配任意字符。在您的示例中,它将是
cim,
表示“匹配逗号内的更改”。有关讨论和修补程序的几个版本,请参见。我已经使用它很长时间了,唯一遇到的问题是视觉模式;但是,我并没有像我期望的那样经常使用这个功能。

当我看到这个时,我想“它不应该是
t,ct,
”?我花了一秒钟才意识到这是重复搜索中的
:h t
:h T
:h ,