有什么方法可以选择标签的属性键值对? 例如,
<input id="test" type="text"/>
我只想选择 id =“ test” 进行快速编辑或删除,我该怎么做?
答案 0 :(得分:2)
假设您位于该行的开头:
WviW
W
跳到下一个单词viW
直观地选择当前单词但是Vim中通常不需要视觉选择(这是其优势之一),因此您可以简单地这样做:
diW
删除当前WORD,或者:
ciW
进行更改,或者:
yiW
拉动它。
请参见:help W
,:help WORD
,:help operator
,:help iW
。
答案 1 :(得分:1)
使用
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>
,因为它会阻止光标正确移动,因此使用@=