如何实现这种行为? (插件/ vimrc / ...?)
#1 楼
插件CamelCaseMotion可以满足您的需求。默认情况下,它映射到键,w
,,b
和,e
,它们等效于普通w
,b
和e
。它适用于CamelCase和snake_case:示例:
camelCaseWord
使用
d,w
将删除camel
;再次使用它将删除Case
。,或者使用蛇皮套:
snake_case_word
d,w
将删除snake_
,第二次将其删除case_
。“内部”运动(例如
diw
)也应能按预期工作(如di,w
)。以及带有以下内容的w
: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
评论
请注意,此插件的默认映射遮住了,命令(重复最后的f / t / F / T运动),这意味着如果要使用该命令,则必须等待延迟(由“ timeoutlen”配置)。幸运的是,该插件允许您使用所选的替代映射。
–tommcdo
2015年2月10日在22:44
这个插件似乎有一些副作用,即:dw on,key);当光标位于k时似乎会删除整行(包括换行符),而我希望仅删除键...
–马丁·图尔诺伊(Martin Tournoij)
2015年2月11日下午0:36
我发现这个插件更好。将运动与删除结合起来可以正常工作,并且它也停在方括号中。
– Paschalis
16年5月5日14:30
次要点,但在第一个示例中,它一定会删除骆驼,然后再删除Case,而不是Word?
– preferred_anon
19年1月17日在10:16
评论
我也想知道关于snake_case您也许可以使用iskeyword设置来做一些事情,但是我担心这会有很多其他的副作用...(请参阅:help word)。
@Carpetsmoker我认为它适用于snake_case。似乎没有,将其包含在问题中。
VimWiki可以满足您的需求:vim.wikia.com/wiki/Moving_through_camel_case_words如果有人不反对我,我会在某个时候写下正确的答案。
我个人认为一个全称的单词是一个整体单词,不喜欢因为大小写或下划线而将单词分成一半的想法。通常,我使用f和t键来管理内部单词的移动。