2

I find it very strange that I can't find this question anywhere...

I made a mapping nnoremap <leader>C /\u<CR> to go to the next capital letter. I thought it would be useful to edit camelCase stuff, so if I had something like oneTwoThree and I wanted to change it to oneFourThree I could just put cursor on the T and do c<leader>C. However this does not work. Is there an easy way to make this work?

Edit: I accidentally found out that pressing <leader>Cc<leader> does what I want, I don't understand why.

6
  • Can you tell us what your mapping is?
    – B Layer
    Dec 16, 2019 at 7:53
  • @BLayer nnoremap <leader>C /\u<CR> Dec 16, 2019 at 8:00
  • @BLayer I wish this to work for any operator. For example if I did d<leader>C it would delete, if I did y<leader>C would yank, etc. Dec 16, 2019 at 8:04
  • Ah, ok. Got it. Then you'll want to look at the omap family of mapping commands as you're in an "operator-pending" state after you hit c.
    – B Layer
    Dec 16, 2019 at 8:04
  • Here's an example: vi.stackexchange.com/questions/6101/…
    – B Layer
    Dec 16, 2019 at 8:11

1 Answer 1

2

nnoremap adds your mapping to Normal mode only. But after c you are in Operator-pending mode, where <leader>C has no effect.

So it suffices to do just noremap <silent><leader>C /\u<CR> instead.

noremap is a convenient command to register mapping in three modes (normal, visual and operator-pending) at once.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.