Как изменить курсор vim в режиме вставки / обычного режима?



Я хотел бы знать, если это возможно, как изменить курсор в vim (цвет, форма и т. д.) В зависимости от того, в каком режиме вы находитесь.



Я постоянно забываю, что я не в режиме вставки и начать вводить код, что приводит к всевозможным сумасшедшим вещам происходит. Было бы полезно, если бы на курсоре была какая-то визуальная индикация.

724   7  
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

кредит:https://gist.github.com/andyfowler/1195581

изменить форму курсора в различных режимах, вы можете добавить следующее в ваш 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

    Ничего не найдено.