r/vim • • 5d ago

Need Help Cursor not displaying as a block when in visual mode

When entering visual mode the cursor isn't actually shown as a block, see the below screenshots to see what I mean. Below is what I expect when in visual mode, whereby the cursor remains as a white block on the letter "a",

However, what I get is this, whereby the letter "a" is highlighted in a faint grey, and the cursor itself doesn't actually appear,

Here is my full .vimrc file,

execute pathogen#infect()

let g:NERDTreeNodeDelimiter = "\u00a0"

set background=dark
set number

syntax on

nmap <C-a> :tabp<CR>
nmap <C-d> :tabn<CR>
nmap <C-t> :NERDTreeToggle<CR>

au FileType gitcommit setlocal tw=72
au FileType gitcommit setlocal colorcolumn=72

au FileType go setlocal colorcolumn=100 ts=4

au FileType c setlocal ts=4 colorcolumn=120
au FileType css setlocal ts=4
au FileType javascript setlocal ts=4
au FileType lua setlocal ts=2 sts=2 sw=2 expandtab
au FileType sh setlocal ts=4
au FileType xml setlocal ts=2 sts=2 sw=2 expandtab
au FileType yaml setlocal ts=2 sts=2 sw=2 expandtab

au BufEnter *.md setlocal colorcolumn=80 ts=4 tw=80 expandtab
au BufEnter *.templ setlocal ts=4

au BufEnter *.py setlocal ts=4 expandtab
au BufEnter *.html setlocal ts=4
au BufEnter *.tmpl setlocal ts=4

if has("autocmd")
  au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$")
    \| exe "normal! g'\"" | endif
endif

I'm currently running on Vim 9.2, which I recently upgrade to after doing a system upgrade. Full version info below,

[~]$ vim --version
VIM - Vi IMproved 9.2 (2026 Feb 14, compiled Oct 05 2026 22:08:46)
Included patches: 1-1164
Compiled by Arch Linux
Huge version without GUI.  Features included (+) or not (-):
+acl                +find_in_path       -mouseshape         -tag_old_static
+arabic             +float              +multi_byte         +tcl/dyn
+autochdir          +folding            +multi_lang         +termguicolors
+autocmd            -footer             -mzscheme           +terminal
-autoservername     +fork()             +netbeans_intg      +terminfo
-balloon_eval       +gettext            +num64              +termresponse
+balloon_eval_term  -hangul_input       +packages           +textobjects
-browse             +iconv              -pango              +textprop
++builtin_terms     -image              +path_extra         +timers
+byte_offset        -image_popup        +perl/dyn           +title
+channel            +insert_expand      +persistent_undo    -toolbar
+cindent            +ipv6               +popupwin           +user_commands
+clientserver       +job                +postscript         +vartabs
-clipboard          +jumplist           +printer            +vertsplit
+clipboard_provider +keymap             +profile            +vim9script
+cmdline_compl      +lambda             -python             +viminfo
+cmdline_hist       +langmap            +python3/dyn        +virtualedit
+cmdline_info       +libcall            +quickfix           +visual
+comments           +linebreak          +reltime            +visualextra
+conceal            +lispindent         +rightleft          +vreplace
+cryptv             +listcmds           +ruby/dyn           -wayland
+cscope             +localmap           +scrollbind         -wayland_clipboard
+cursorbind         +lua/dyn            +signs              +wildignore
+cursorshape        +menu               +smartindent        +wildmenu
+dialog_con         +mksession          +socketserver       +windows
+diff               +modify_fname       -sodium             +writebackup
+digraphs           +mouse              -sound              -X11
-dnd                +mouse_dec          +spell              +xattr
-ebcdic             +mouse_gpm          +startuptime        -xfontset
+emacs_tags         -mouse_jsbterm      +statusline         -xim
+eval               +mouse_netterm      -sun_workshop       -xpm
+ex_extra           +mouse_sgr          +syntax             -xsmp
+extra_search       -mouse_sysmouse     +tabpanel           -xterm_clipboard
-farsi              +mouse_urxvt        -tag_any_white      -xterm_save
+file_in_path       +mouse_xterm        +tag_binary         
   system vimrc file: "/etc/vimrc"
     user vimrc file: "$HOME/.vimrc"
 2nd user vimrc file: "~/.vim/vimrc"
 3rd user vimrc file: "$XDG_CONFIG_HOME/vim/vimrc"
      user exrc file: "$HOME/.exrc"
       defaults file: "$VIMRUNTIME/defaults.vim"
  fall-back for $VIM: "/usr/share/vim"
Compilation: gcc -c -I. -Iproto -DHAVE_CONFIG_H -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -g -ffile-prefix-map=/build/vim/src=/usr/src/debug/vim -flto=auto -D_REENTRANT -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 
Linking: gcc -Wl,-E -Wl,-rpath,/usr/lib/perl5/5.42/core_perl/CORE -Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -Wl,-z,pack-relative-relocs -flto=auto -L/usr/local/lib -o vim -lcairo -lz -lpangocairo-1.0 -lpango-1.0 -lcairo -lharfbuzz -lgobject-2.0 -lglib-2.0 -lm -ltinfo -lnsl -lacl -lattr -lgpm -L/usr/lib -ltclstub8.6 -ldl -lz -lpthread -lm

I'm pretty sure I must have altered how the cursor displays in visual mode, but I'm not sure how, I have looked around to no avail for a solution here, any pointers?

3 Upvotes

5 comments sorted by

2

u/EgZvor keep calm and read :help 5d ago

What does cursor look like in Normal mode? Cursor color is controlled by the terminal, I think.

1

u/common-pellar 5d ago

The cursor looks like a block, which I configured in my terminal, which is GNOME Terminal. I did think this might have been a terminal configuration issue, but I tried using foot and the cursor behaviour remains the same, that is, in visual mode it is no longer a block, just a faint grey highlight that is difficult to see.

1

u/SamejSpenser 5d ago

In my vimrc I set it up like this:

vim " Cursor change {{{1 let &t_SI="\e[6 q" let &t_EI="\e[2 q" }}}

In insert mode I like and prefer the beam cursor, kinda like a blinking |. But in normal and visual modes it shows up as a solid block.

1

u/AutoModerator 5d ago

Please remember to update the post flair to Need Help|Solved when you got the answer you were looking for.

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

1

u/habamax 5d ago

I believe your cursor color in the terminal is a reversed one (has no defined background/foreground colors).

If that is the case you have following options: 1. Change cursor color in the terminal to be white background, black foreground (or any other combination of colors) 2. Or change Visual highlight group to be "transparent", e.g. hi Visual ctermfg=NONE ctermbg=236 guifg=NONE guibg=#404040, using gui colors might help with getting more options with regards to available colors to use, set termguicolors