Vim – how to avoid hjkl confusion in Insert mode

Last Updated on

 

 

Are you a Vim user? Do you like to use the hjkl keys to move the cursor in Normal mode, like me? If you do, perhaps you’ve experienced the annoyance of forgetting that you are in Insert mode, only to find something like ffffff or kkkkk appearing on the screen instead of the expected cursor movement. I have to admit that this still happens to me, even after many years. How can it be avoided?

Vim experts advise that you should stay in Normal mode most of the time; it should be the default. I agree, and I do try to remember to do this.  Another idea, which I’ve tried in the past, is to make key mappings such as Alt+h and Alt+l in Insert mode to move the cursor.. Of course, you still have to remember which mode you are in unless you make the same mappings for Normal mode. But then you’ve lost the simplicity of the default one-key hjkl, which was the main roeason to go down this route in the first place.

The solution I’ve adopted is based on <https://stackoverflow.com/questions/7614546/vim-cursorline-color-change-in-insert-mode>. Here is the code I’m using in .gvimrc with a dark colour scheme (Murphy).

set cursorline
autocmd InsertEnter * highlight CursorLine guifg=white guibg=grey25
autocmd InsertLeave * highlight CursorLine guifg=white guibg=red
set guicursor+=n-v-c:blinkonO

This gives a light grey cursor line in Insert mode which stand out on the dark background but not too starkly. In Normal mode the cursor line becomes red. I use the default cursor, which is block in Normal mode and 25% in Insert mode. Both are white; I’ve set the Normal mode cursor not to blink.

I find that this set-up acts as an effective reminder of which mode I’m in.

Leave a Reply

Your email address will not be published. Required fields are marked *

Anti-Spam Quiz: