如何在Vim中移动大小写为骆驼形的标识符中的单词



如何将光标移动到Vim中单词的第一个大写字母之前或之后?

我的动机是删除或选择代码中骆驼大小写标识符的第一个单词。例如,如果光标位于单词camelCase中的m字符上,我可以使用正常模式命令的FcdtC序列来删除camel前缀。

有没有一种通用的方法可以跳到标识符中下一个大写字母的位置?

在只使用内置Vim仪器的方法优选地,可以使用以下搜索命令。

用于跳到下一个大写字符:

/u

用于将光标移动到下一个大写字母的右侧一个字符字符:

/u/s+

/uzs

如果一个人期望经常使用这样的动作,他总是可以为其定义一个快捷键映射,例如:

:nnoremap <leader>u /u/s+<cr>

我不认为有任何内置功能

作为@ib。表示,可以使用正则表达式运动,但键入起来并不特别容易。然而,有一个camelcasemotion插件,它为此添加了必要的动作,以及下划线分隔的标识符。

更新的答案(使用@ib.的贡献)

"select from first char up to First uppercase letter ( after first char )
map ,b bv/[A-Z]<cr>h

原始答案

关于在第一个大写字母前后跳跃--
如果你想的话,你可以绘制地图。

"Before next uppercase letter
map ,A /[A-Z]<cr>l
"After next uppercase letter
map ,B /[A-Z]<cr>h

:D。希望这能有所帮助。我现在读你的第二个问题。

好的,读一下。现在你可以做这个了

bv,A

:D

我想我想也许是"vim方式":

Vim允许我们定义自己的运营商!

" movement mapping {
" Delete yank or change until next UpperCase
" o waits for you to enter a movement command : http://learnvimscriptthehardway.stevelosh.com/chapters/15.html
" M is for Maj (as in french)
" :<c-u>execute -> special way to run multiple normal commande in a map : learnvimscriptthehardway.stevelosh.com/chapters/16.html
onoremap M :<c-u>execute "normal! /[A-Z]r:nohlsearchr"<cr>

这样可以提供

DailyAverage.new(FooBarBaz)

如果我的光标在a(来自DailyMesure)上,并且我按下dM,它会删除到A并给出

Average.new(FooBarBaz)

它适用于所有等待移动的命令(c y……..)

这个片段需要改进,因为高亮显示不好。

最新更新