我无法找到解决方案(这里和网上),只需选择/插入/删除由点包围的东西(开发中常见的情况):
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)
编辑:更常见的例子(在javascript中)
app.object['key'].$object_with_a_dollar_sign.function()
我怀疑这里的真正问题是连字符不被认为是标识符的一部分
你应该尝试添加
:se iskeyword+=-
为您的文件类型.这样,viw将会真正地做出你想要的
:autocmd BufReadPost *.strange se isk+=-
将该行添加到您的vimrc(:e $MYVIMRC)中,您将永远不必考虑添加iskeyword设置.另请参见:他的模型是为每个文件设置此设置的替代方法
更新更纯净的解决方案将创建您自己的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
> v.选择一些属性与连字符.在视觉模式
> va选择.some-property-with-连字符.在视觉模式
> vi.在视觉模式下选择一些属性连字符
动作可以链接并接受计数:
> v ..选择some-property-with-hyphens.SUB.在视觉模式
> v2.也选择一些属性与连字符.SUB.在视觉模式
> v2a.选择.some-property-with-hyphens.SUB.在视觉模式
> v2i.在视觉模式下选择一些连字符
您可以将运算符作为运算符用于任何编辑命令:
> d.导致某些对象.其他属性
> ci.shortname导致someobject.shortname.SUB.otherproperty
> c2.get(“results in someobject.get(”otherproperty
光标所在的“点划分标识符”中的哪里不要紧.请注意,为了方便起见,所有视觉模式映射将光标定位在选择结束处(因此您可以继续扩展选择,例如%和其他动作).