How to stop the blinking cursor in VIM mode?

set guicursor+=n-v-c:blinkon0 not work
set guicursor+=a:blinkon0 not work

I don’t think this is possible, but you might want to give the vimrc plugin a try just in case. It probably has documentation on what CodeMirror supports in regards to vim.

I found this on Codemirror

cursorBlinkRate: number
Half-period in milliseconds used for cursor blinking. The default blink rate is 530ms. By setting this to zero, blinking can be disabled. A negative value hides the cursor entirely.

How to implement this?
Help stop this blinking)))

P.S.
Obsidian Vimrc Support Plugin installed

Hey AL_AL,

that’s a pretty good lead already. I managed to find a very, very hacky way of setting this option.

Since these are options specific to a CodeMirror object instance, I looked around on the website for a cheap and easy way to set this. Turns out there is the static method CodeMirror.defineInitHook which takes as argument a function and runs that function on each intialisation of a codemirror instance. This function receives as parameter the aforementioned instance.

So, a really hacky way would be to just do

CodeMirror.defineInitHook(function(instance) {
    instance.setOption('cursorBlinkRate', 0);
});

the big question is of course where to put that snippet of code.

I think a good way would be to put it in a really small standalone Obsidian plugin. There seems to be plenty of documentation on how to develop a plugin. I briefly tried checking out the obsidian sample plugin but I couldn’t get it to compile on first try and don’t feel like messing around with npm tonight.

Another really hackish way that seems to work is just put the snippet into some other plugin’s main.js. In this case, I used the vimrc plugin above and put the snippet in VimrcPlugin.prototype.onload.

Cheers,
Ben

Hi again,

I went a bit further and set up a super simple barebones plugin that disables cursors blink (as far as I can see).

If you’re familiar with git, you can clone it from here directly into <workspace>/.obsidian/plugins/. Unless you make any changes, you should be good to go, the compiled main.js comes with it.

Don’t forget to enable the plugin in the Obsidian settings.

Cheers,
Ben

2 Likes

This is working for me. Thanks @xnhp!

I just gave you a pull request to update the manifest.json so it shows as something other than “Sample Plugin” :slight_smile:

Nice, thank you aswell.

If you are interested in further styling your cursor, here’s how to change the colour of the vim block cursor (and get the current line highlighted).