例如,我有这样的文本:
I talked to a friend, I hiked a mountain, I am working with blah blah,
我想删除或替换I hiked a mountain。为什么ci,或di,不起作用?有没有办法在逗号之间抓取、替换或删除?
I hiked a mountain
ci,
di,
bakd9h0s1#
有一些插件可以让你创建自定义文本对象。2如果没有安装插件,假设你的光标在两个逗号之间,你可以:
T,c,
或
t,c,
要模拟di,的ci,,请将上面的c更改为d相关帮助文档:
c
d
:h t :h T :h ,
brgchamk2#
有很多插件可以帮助你创建自定义的文本对象,比如textobjectify。我在我的vimrc中使用下面的代码片段已经有一段时间了,它从来没有让我失望过:
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
它创建di,、vi%、ci:、ya|等所需的所有自定义运算符挂起Map。添加新的分隔符也很容易。我的vimrc里有可爱的笑脸。
vi%
ci:
ya|
zzlelutf3#
如果您在类似的部分中,则可以使用T,ct,。或者你如果你想安装一个插件像vim-argumentative允许你使用ci,和di,
T,ct,
qncylg1j4#
如果你愿意为Vim打补丁的话,不久前有一个建议(包括一个大部分工作的补丁)允许你匹配任意字符。在你的例子中,它是cim,,表示“在匹配的逗号内改变”。请参见https://groups.google.com/d/topic/vim_dev/pZxLAAXxk0M/discussion的讨论和补丁的一些版本。我已经用了很长时间了,我遇到的唯一问题是在可视模式下;但是,我并没有像预期的那样经常使用这个特性。
cim,
shyt4zoc5#
使用targets.vim:
targets.vim
da,
5条答案
按热度按时间bakd9h0s1#
有一些插件可以让你创建自定义文本对象。2如果没有安装插件,假设你的光标在两个逗号之间,你可以:
或
要模拟
di,
的ci,
,请将上面的c
更改为d
相关帮助文档:
brgchamk2#
有很多插件可以帮助你创建自定义的文本对象,比如textobjectify。
我在我的
vimrc
中使用下面的代码片段已经有一段时间了,它从来没有让我失望过:它创建
di,
、vi%
、ci:
、ya|
等所需的所有自定义运算符挂起Map。添加新的分隔符也很容易。
我的
vimrc
里有可爱的笑脸。zzlelutf3#
如果您在类似的部分中,则可以使用
T,ct,
。或者你如果你想安装一个插件像vim-argumentative允许你使用
ci,
和di,
qncylg1j4#
如果你愿意为Vim打补丁的话,不久前有一个建议(包括一个大部分工作的补丁)允许你匹配任意字符。在你的例子中,它是
cim,
,表示“在匹配的逗号内改变”。请参见https://groups.google.com/d/topic/vim_dev/pZxLAAXxk0M/discussion的讨论和补丁的一些版本。我已经用了很长时间了,我遇到的唯一问题是在可视模式下;但是,我并没有像预期的那样经常使用这个特性。shyt4zoc5#
使用
targets.vim
:da,
删除整个句子并留下一个逗号。ci,
以更改逗号内的内容。