9
votes

When editing code in Vim, I will often use caps lock when writing stuff in ALL CAPS. However, I often forget to turn off caps lock when I'm done with the capitalized portion. This causes no end of pain (since, ie, j moves down, but J joins the current line with the line below).

Usually, I want to turn off caps lock when I exit insert mode. How can I add something to my .vimrc so that it will either turn caps lock off when exiting insert mode? Alternately, how could I add something to my .vimrc so that it will alert me (status line? beep? any alert is fine) if I have caps lock on when exiting insert mode?

Thanks!

1
You can use autocmd InsertLeave to perform an action when leaving insert mode but I don't think there's a way to turn caps on/off from within vim since it's a modifier key (you might be able to do it in an OS specific way though).Benj
Why wouldn't you take the habit of typing normally and then change the case of your text?romainl
This will help.Pavan Manjunath
i would too recommend using for example nnoremap <C-u> gUiw and inoremap <C-u> <esc>gUiwea to uppercase single words; additionally i use autocomplpop-plugin so any word i already typed is suggested in the way i typed it.epsilonhalbe
@epsilonhalbe (+romainl): Yeah, I have something similar, but I still find using caps lock more convenient and faster aside from the issue described here.Sam King

1 Answers

6
votes

Like all other applications, Vim / GVIM sits atop the terminal / window manager abstractions, and therefore has no direct access to the underlying raw keyboard functions. So getting Caps Lock information would involve messy and platform-specific hacks.

Instead, I would advise you to use Vim features to "emulate" Caps Lock within Vim, as this doesn't have the problems you've mentioned. Have a look at the article Insert-mode only Caps Lock, which explains this in detail.