有没有快速的方法在vim中选择属性键值对(例如id =“mytest”in)?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有没有快速的方法在vim中选择属性键值对(例如id =“mytest”in)?相关的知识,希望对你有一定的参考价值。
有什么办法可以为标签选择属性键值对吗?例如,
<input id="test" type="text"/>
我只想选择id =“test”进行快速编辑或删除,我该怎么做?
答案
同
nnoremap <silent> µ @=search('id="', 'ze') > 0 ? 'lvi"<c-g>' : ''<cr>
你将最终进入Select-mode
,选择id
标签的内容。从选择模式,它很容易删除(使用<del>
键),或替换(只需键入新内容)。如果您希望使用x
简化删除操作,并且如果您不关心在替换之前键入s
,则可以保持可视模式。在这种情况下,删除映射的<c-g>
部分。
但是,它仅适用于双引号字符串。对于任何类型的字符串,您需要提取使用的引号字符:
nnoremap <silent> µ @=search('id=[''"]', 'ze') > 0 ? 'lvi'.getline('.')[col('.')-1].'<c-g>' : ''<cr>
如果您希望能够继续跳转,则使用不可打印的字符进行键绑定,并为其他模式添加映射。
nnoremap <silent> <c-j> @=search('id=[''"]', 'ze') > 0 ? 'lvi'.getline('.')[col('.')-1].'<c-g>' : ''<cr>
" vmap will work in visual and in select mode;
vmap <silent> <c-j> <c-><c-n><c-j>
" you may want to support the insert-mode as well
imap <silent> <c-j> <c-><c-n><c-j>
注意:我们不能使用:map-<expr>
,因为它会阻止光标正确移动,因此使用@=
另一答案
假设你在行的开头:
WviW
W
跳到下一个WORDviW
用肉眼选择当前的WORD
但是在Vim中通常不需要视觉选择(这是它的优势之一)所以你可以简单地做:
diW
删除当前的WORD,或者:
ciW
改变它,或:
yiW
猛拉它。
见:help W
,:help WORD
,:help operator
,:help iW
。
以上是关于有没有快速的方法在vim中选择属性键值对(例如id =“mytest”in)?的主要内容,如果未能解决你的问题,请参考以下文章