更改neovim中的HTML属性

更改neovim中的HTML属性,vim,neovim,Vim,Neovim,我发现自己很难在HTML标记中快速更改属性 例如,我有以下代码 <div className="expense-date"> <div className="expense-date__@@@year">{year}</div> <div>{month}</div> <div>{day}</div> </div> 我的光标在@@@所在的位置,我想删

我发现自己很难在HTML标记中快速更改属性

例如,我有以下代码

<div className="expense-date">
  <div className="expense-date__@@@year">{year}</div>
  <div>{month}</div>
  <div>{day}</div>
</div>
我的光标在@@@所在的位置,我想删除整个属性:className=expense-date\uu@@@year


是否有任何文本对象可用于快速删除它?目前,如果有另一个属性,我会使用T-ct>或T-ct,但这显然不够好,如果属性值中有一个空格,这将不起作用。

据我所知,没有简单的方法可以做到这一点;除非执行深入的语法分析,否则总会有一些警告

但是,您可以改进您的技术,例如使用FF=bF d2f

F转到字符串的开头; F=转到上一个=符号,跳过两个符号之间的最终空格; B在属性中间的属性名为EngUALY,例如对于数据我的Atter,跳过最终的空间; F转到属性名称前的第一个空格; d2f或c2f执行作业。
当然,为了简化它的使用,您可以将它用作带有q和@的宏。

据我所知,没有简单的方法可以做到这一点;除非执行深入的语法分析,否则总会有一些警告

但是,您可以改进您的技术,例如使用FF=bF d2f

F转到字符串的开头; F=转到上一个=符号,跳过两个符号之间的最终空格; B在属性中间的属性名为EngUALY,例如对于数据我的Atter,跳过最终的空间; F转到属性名称前的第一个空格; d2f或c2f执行作业。
当然,为了简化其使用,您可以将其用作带有q和@的宏。

没有内置的属性文本对象,但您可以使用类似以下的通用对象来近似使用它:

va"oB
yix
dax
vix
cax
…
其中:

va选择值, o将光标移动到选择的另一侧, B将选择扩展到属性的开头。 可以将其转换为快速且脏的伪文本对象:

xnoremap ix a"oB
onoremap ix :<C-u>normal vix<CR>
xnoremap ax a"oBh
onoremap ax :<C-u>normal vax<CR>
有关更智能的实现,请参阅


请注意,此答案中的任何内容都不能保证在Neovim中起作用。

没有内置的属性文本对象,但您可以使用类似以下的通用对象来近似该对象:

va"oB
yix
dax
vix
cax
…
其中:

va选择值, o将光标移动到选择的另一侧, B将选择扩展到属性的开头。 可以将其转换为快速且脏的伪文本对象:

xnoremap ix a"oB
onoremap ix :<C-u>normal vix<CR>
xnoremap ax a"oBh
onoremap ax :<C-u>normal vax<CR>
有关更智能的实现,请参阅

请注意,此答案中的任何内容都不能保证在Neovim中起作用。

这里有另一个选项:

vi>   ........ visual select inner <>
o ............ jump to the other side
w ............ jump to the next word
还有一个选择:

vi>   ........ visual select inner <>
o ............ jump to the other side
w ............ jump to the next word