我无法找到解决方案(此处和网络上),只需选择/插入/删除由圆点包围的内容(开发中常见的情况):
someobject.some-property-with-hyphens.otherproperty
如何选择中间属性?
我试过了:
vi. (dot is for executing last command)
viw (don't include hyphens)
4viw (still nop)
vis (select full line)
app.object['key'].$object_with_a_dollar_sign.function()
答案 0 :(得分:18)
我怀疑这里的真正的问题是连字符不被视为标识符的一部分
您应该尝试添加
:se iskeyword+=-
表示您的文件类型。这样, v i w 将完全符合您的要求
要为strange
个文件自动设置此设置:
:autocmd BufReadPost *.strange se isk+=-
将该行添加到vimrc(:e $MYVIMRC
),您将永远不必考虑添加iskeyword设置。另请参阅:he modeline
了解为每个文件设置此设置的其他方法
更新更纯粹的解决方案是创建您自己的 operator-mapping 。
快速草案,对我来说似乎非常好用:
xnoremap <silent>. f.oT.o
xnoremap <silent>a. f.oF.o
xnoremap <silent>i. t.oT.o
onoremap <silent>. :<C-u>exec 'normal v' . v:count1 . '.'<CR>
onoremap <silent>a. :<C-u>exec 'normal v' . v:count1 . 'a.'<CR>
onoremap <silent>i. :<C-u>exec 'normal v' . v:count1 . 'i.'<CR>
以下缓冲区内容的示例(字母w
上的光标):
someobject.some-property-with-hyphens.SUB.otherproperty
some-property-with-hyphens.
.some-property-with-hyphens.
some-property-with-hyphens
动作可以链接并接受count
:
some-property-with-hyphens.SUB.
some-property-with-hyphens.SUB.
.some-property-with-hyphens.SUB.
some-property-with-hyphens.SUB
您可以将运算符用作任何编辑命令的运算符:
someobject.SUB.otherproperty
someobject.shortname.SUB.otherproperty
someobject.get("otherproperty
在%
和其他动作继续扩展选择。)
答案 1 :(得分:1)
我不是很确定(我每天都学习新的vim功能),但我认为你无法在带有文本对象的点之间进行选择。因此,如果这是您的常见情况,您可以创建如下的映射:
nnoremap <leader>d t.vT.
每次需要在点之间进行选择时,只是为了避免输入五个字符。
答案 2 :(得分:1)
也许这不是你想要的,但我使用标准搜索功能并输入
/\..*\.并选择.some-property-with-hyphens。上例中的值。
答案 3 :(得分:0)
你可能想试试这个,虽然这不是一个正确的答案:
将光标放在s(点后)上并键入:(这意味着直到点为止。)
vf.
我相信你不能使用vi的原因。是点不是vim可以找到它的另一对像(或'“。
答案 4 :(得分:0)
我不知道任何通用解决方案。对于select / delete / insert,我使用常规表达式。
:%s/\.some-property-with-hyphens\./.i-like-this-property./g
只需选择
/\.some-property-with-hypehns\.
更通用的规则
/\.[\-a-zA-Z0-9]*\.
希望这就是你所要求的。