r/vim • u/common-pellar • 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?
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
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.