有什么办法可以为标签选择属性键值对吗?例如,
<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
。