如何删除或猛拉斜线和星号?

Umu*_*kun 5 vim

我用括号和HTML标签的di"引号.di{dit

我经常使用CSS.我想删除内部斜杠或星号.例如:

/* This is a comment. Delete or yank me. ;) */
.button {
  content: 'Change my comment.';
}
Run Code Online (Sandbox Code Playgroud)

我不想用功能等来做这件事我如何用所有变化来映射这些关键字?(特别我需要delete inside,yank inside,delete around,delete and go insert mode (ci/))喜欢的:

di/
yi/
ci/
ya/
da/
di*
ya*
Run Code Online (Sandbox Code Playgroud)

等等...

rom*_*inl 13

您可以通过组合可视模式映射和操作员挂起模式映射来定义自己的文本对象.

此代码段将创建一个i/文本对象:

xnoremap i/ :<C-u>normal! T/vt/<CR>
onoremap i/ :normal vi/<CR>
Run Code Online (Sandbox Code Playgroud)

你可以像使用内置的:ci/,vi/,di/,yi/.

这个将创建一个a/文本对象:

xnoremap a/ :<C-u>normal! F/vf/<CR>
onoremap a/ :normal va/<CR>
Run Code Online (Sandbox Code Playgroud)

你可以像使用内置的:ca/,va/,da/,ya/.


奖励:这是一个易于扩展的片段,vimrc可以创建不少于26个新文本对象,包括你想要的文本对象:

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)


小智 5

还有优秀的targets.vim插件,其中包括那些文本对象以及大量其他对象。可能值得一试,特别是如果您不想定义自己的。