Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Vim change block cursor when in insert mode

Tags:

linux

shell

vim

Not sure what the terminology is for it but on Vim the 'cursor' is always like an insert/replace cursor instead of the blinking line cursor I'm used to in other gui editors. Is there any way to change this when in insert mode?

like image 270
Derek Organ Avatar asked Jan 24 '11 02:01

Derek Organ


People also ask

How do I change my cursor from insert mode?

You may have just pressed your INSERT key on your keyboard. This changes Word, etc., from insert mode to overtype mode. Press the INSERT key again and it should toggle back to being a line.

How do I change my cursor in Vim?

Changing the cursor color in insert modeUsing gvim with the defaults, the cursor shape is a block when in n-v-c modes (normal mode, or visual selection mode, or command mode while entering a colon command), and the shape changes to a vertical bar when in i (insert) mode. The color and blink rates do not change.

How do I turn off my mouse block?

In the bottom right corner of the settings menu select Change PC Settings. In the PC Settings Menu select Ease of Access. In the Ease of Access Menu select Other Options. At the bottom of the page in the Visual Options section see the Cursor Thickness Slider and slide it all the way to the left.


2 Answers

I know this is an old question but hopefully this will help anyone else facing the same scenario.

Actually I'm using iTerm2 and using Vim inside my terminal on Mac. And when entering to insert mode, the cursor still being a block and is kind of confusing when you are at insert mode or normal mode.

I wanted to show a thin line as cursor when in insert mode and back to block when in normal mode as MacVim does. And to do so it's pretty simple, just added this to my .vimrc file as described here:

let &t_SI = "\<Esc>]50;CursorShape=1\x7"
let &t_SR = "\<Esc>]50;CursorShape=2\x7"
let &t_EI = "\<Esc>]50;CursorShape=0\x7"

enter image description here

But as you can see there was a delay when hitting ESC to exit insert mode back to normal mode and show the block as cursor again. So to fix it I found this:

set ttimeout
set ttimeoutlen=1
set listchars=tab:>-,trail:~,extends:>,precedes:<,space:.
set ttyfast

And now it works pretty fine as you can see:

fix delay going back to block as cursor

I hope it could help any one else! 👻

like image 183
alexventuraio Avatar answered Sep 22 '22 12:09

alexventuraio


The gcr option does this, although I'm not sure exactly how it needs to be set to get the results you want.

:help gcr

If you read the manual and play around with it, you should be able to figure it out.

The blinking cursor in insert mode is usually the default. Maybe the gcr option got changed in your .vimrc

like image 40
Jay Avatar answered Sep 21 '22 12:09

Jay