Как изменить курсор vim в режиме вставки / обычного режима?
Я хотел бы знать, если это возможно, как изменить курсор в vim (цвет, форма и т. д.) В зависимости от того, в каком режиме вы находитесь.
Я постоянно забываю, что я не в режиме вставки и начать вводить код, что приводит к всевозможным сумасшедшим вещам происходит. Было бы полезно, если бы на курсоре была какая-то визуальная индикация.
7 ответов:
у меня обычно есть текущий режим vim на statusline, среди прочего. Если вы ищете простоту, вы можете установить только эта информация в строке состояния.
:h J и:h Kчтобы увидеть, что я имею в виду). Просто остерегайтесь капс лок клавишу и вы будете в порядке большую часть времени ИМО.
популярная опция для указания переключения в режим вставки (и обратно в нормальное состояние режим) переключение
cursorlineпараметр, который отвечает за Ли текущая строка экрана подсвечивается.:autocmd InsertEnter,InsertLeave * set cul!или
:autocmd InsertEnter * set cul :autocmd InsertLeave * set nocul
следующие работы для xterm/urxvt/... (Linux), iTerm2 (Mac), Git Bash с ConEmu (Windows) и многое другое (см. комментарии):
let &t_SI = "\e[6 q" let &t_EI = "\e[2 q" " optional reset cursor on start: augroup myCmds au! autocmd VimEnter * silent !echo -ne "\e[2 q" augroup ENDпри использовании tmux важно, чтобы вы использовали его так (без
\<Esc>Ptmux;escape) - tmux будет отслеживать правильную форму курсора при переключении окон/панелей. Возможно, Вам потребуется установитьTERM=xterm-256colorперед началом tmux, если он не работает для вас.другие опции (замените номер после \e [):
Ps = 0 -> blinking block. Ps = 1 -> blinking block (default). Ps = 2 -> steady block. Ps = 3 -> blinking underline. Ps = 4 -> steady underline. Ps = 5 -> blinking bar (xterm). Ps = 6 -> steady bar (xterm).
Если вы используете tmux и iTerm2 on OSX,
следующие изменения курсора из блока в курсор и выделяет текущую строкуif exists('$TMUX') let &t_SI = "\<Esc>Ptmux;\<Esc>\<Esc>]50;CursorShape=1\x7\<Esc>\" let &t_EI = "\<Esc>Ptmux;\<Esc>\<Esc>]50;CursorShape=0\x7\<Esc>\" else let &t_SI = "\<Esc>]50;CursorShape=1\x7" let &t_EI = "\<Esc>]50;CursorShape=0\x7" endif :autocmd InsertEnter * set cul :autocmd InsertLeave * set nocul
изменить форму курсора в различных режимах, вы можете добавить следующее в ваш vimrc.
для Gnome-терминала (версия 2.26)Edit
if has("autocmd") au InsertEnter * silent execute "!gconftool-2 --type string --set /apps/gnome-terminal/profiles/Default/cursor_shape ibeam" au InsertLeave * silent execute "!gconftool-2 --type string --set /apps/gnome-terminal/profiles/Default/cursor_shape block" au VimLeave * silent execute "!gconftool-2 --type string --set /apps/gnome-terminal/profiles/Default/cursor_shape ibeam" endifЕсли вы используете более одного профиля в gnome-terminal, вам, возможно, придется адаптировать его к вашим профилям.
для Konsole в KDE4Edit
let &t_SI = "\<Esc>]50;CursorShape=1\x7" let &t_EI = "\<Esc>]50;CursorShape=0\x7"это работает с несколькими вкладками и окна.
http://vim.wikia.com/wiki/Change_cursor_shape_in_different_modes
Я считаю полезным иметь только мигающий курсор в режиме вставки и статический в других режимах.
set guicursor+=n-v-c:blinkon0
вы можете попробовать terminus Vim plugin:
в режиме вставки форма курсора изменяется на тонкую вертикальную полосу. В режиме замены он изменяется на подчеркивание. При возвращении в нормальный режим он возвращается к стандартной форме "блок".
Comments