有没有快速的方法在vim中选择属性键值对(例如id =“mytest”in)?

问题描述 投票:0回答:2

有什么办法可以为标签选择属性键值对吗?例如,

<input id="test" type="text"/>

我只想选择id =“test”进行快速编辑或删除,我该怎么做?

vim
2个回答
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>,因为它会阻止光标正确移动,因此使用@=


2
投票

假设你在行的开头:

WviW
  • W跳到下一个WORD
  • viW用肉眼选择当前的WORD

但是在Vim中通常不需要视觉选择(这是它的优势之一)所以你可以简单地做:

diW

删除当前的WORD,或者:

ciW

改变它,或:

yiW

猛拉它。

:help W:help WORD:help operator:help iW

© www.soinside.com 2019 - 2024. All rights reserved.