你能用vi/vim中的逗号(或任意字符)替换或删除吗?

mod*_*tos 7 vim

例如,我有这样的文字:

I talked to a friend, I hiked a mountain, I am working with blah blah, 
Run Code Online (Sandbox Code Playgroud)

我想删除或替换I hiked a mountain.为什么不ci,还是di,工作?有没有办法在逗号之间抓取,替换或删除?

Ken*_*ent 11

有插件可以让你创建自定义的文本对象.如果没有安装插件,假设你的光标在两个逗号之间,你可以这样做:

T,c,
Run Code Online (Sandbox Code Playgroud)

要么

t,c,
Run Code Online (Sandbox Code Playgroud)

模拟你ci,di,改变上述cd

相关帮助文档:

:h t
:h T
:h ,
Run Code Online (Sandbox Code Playgroud)

  • 当我看到这个时,我想“不应该是`T,ct,`吗?” 我花了一秒钟才意识到这是“,”,就像在重复搜索中一样。 (2认同)

rom*_*inl 7

有一堆插件可以帮助您创建自定义文本对象,如textobjectify.

我已经有了以下片段了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
Run Code Online (Sandbox Code Playgroud)

它创建所有必需的自定义操作符等待映射di,,vi%,ci:,ya|等等.

并且添加新的分隔符很容易.

我的脸上有可爱的笑脸vimrc.