如何使动作尊重camelCase或snake_case?


20

通常使用camelCase或snake_case来分隔构成标识符的多个单词。这将是很好如果“字”运动(bwe)将检测这些内部标识符边界。

如何实现这种行为?(插件/ vimrc / ...?)


1
我也想知道snake_case
马丁·图尔诺伊

您可能可以使用该iskeyword设置来做一些事情,但是我担心这会带来许多其他副作用……(请参阅参考资料:help word)。
马丁·图尔诺伊

@Carpetsmoker我认为这对它有用snake_case。似乎没有,将其包括在问题中。
2015年

4
VimWiki可以帮助您:vim.wikia.com/wiki/Moving_through_camel_case_words如果有人不反对我,我会在某个时候写下正确的答案。
丰富

我个人认为一个全称的单词是一个整体单词,不喜欢因为大小写或下划线而将单词分成一半的想法。通常,我使用ft键来管理内部单词的移动。
Sukima 2015年

Answers:


11

插件CamelCaseMotion可以满足您的需求。默认情况下,它映射到按键,w,b,e这等同于正常的wbe。它适用于CamelCase和snake_case:

例:

camelCaseWord

使用d,w将删除camel; 再次使用它将删除Case

或搭配蛇皮套:

snake_case_word

d,w将删除snake_,并在第二次删除case_

“内部”动作(如diw)也应按预期工作(如di,w)。

如果你愿意,你也可以覆盖默认的wb以及e具有:

map <silent> w <Plug>CamelCaseMotion_w
map <silent> b <Plug>CamelCaseMotion_b
map <silent> e <Plug>CamelCaseMotion_e
sunmap w
sunmap b
sunmap e
omap <silent> iw <Plug>CamelCaseMotion_iw
xmap <silent> iw <Plug>CamelCaseMotion_iw
omap <silent> ib <Plug>CamelCaseMotion_ib
xmap <silent> ib <Plug>CamelCaseMotion_ib
omap <silent> ie <Plug>CamelCaseMotion_ie
xmap <silent> ie <Plug>CamelCaseMotion_ie

2
请注意,此插件的默认映射遮住了该,命令(重复last f/ t/ F/ Tmotion),这意味着如果要使用该命令,则必须等待延迟(由配置'timeoutlen')。幸运的是,该插件允许您使用所选的替代映射。
tommcdo 2015年

似乎有一些副作用有了这个插件,即:dw, key);,当光标位于k似乎删除整条生产线(包括新行),而我只是希望key被删除...
马丁Tournoij

1
我发现这个插件更好。将运动与删除结合起来可以正常工作,并且它也停在方括号中。
Paschalis

次要点,但在第一个示例中,它一定会删除camel,然后Case,不是Word吗?
preferred_anon
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.