Я хотел бы знать, как изменить, если возможно, курсор в Vim (по цвету, форме и т. Д.) В зависимости от того, в каком режиме вы находитесь.
Я постоянно забываю, что нахожусь не в режиме вставки и начинаю набирать код, что приводит к всяким безумным вещам. Было бы полезно, если бы на курсоре была какая-то визуальная индикация.
Ответы:
Популярным вариантом обозначения переключения в режим вставки и из него является переключение
cursorline
параметра, который отвечает за то, будет ли выделена текущая строка экрана (см.:help cursorline
):или, альтернативно:
Измените группу
CursorLine
выделения, чтобы изменить стиль линии курсора по своему вкусу (см.:help :highlight
И:help highlight-groups
).источник
cursorline
опция не зависит от возможностей платформы; он доступен в любом экземпляре Vim, скомпилированном с этой+syntax
функцией (что обычно и бывает).echo 'autocmd InsertEnter,InsertLeave * set cul!' >>~/.vimrc
Следующее работает в xterm, urxvt и других эмуляторах терминала в Linux; iTerm2 на macOS; Git Bash с ConEmu в Windows; и многое другое (см. комментарии):
Другие варианты (замените цифру после
\e[
):Когда вы используете tmux , важно использовать его таким образом (без
\<Esc>Ptmux;
выхода). tmux будет отслеживать правильную форму курсора при переключении окон / панелей.Если это не сработает для вас, попробуйте либо установить
TERM=xterm-256color
перед запуском tmux, либо добавить это в свой.tmux.conf
( спасибо @Steven Lu ):источник
set -ga terminal-overrides ',*:Ss=\E[%p1%d q:Se=\E[2 q'
моей конфигурацией tmux. Очевидно , если вы используетеset
дляterminal-overrides
без-a
, он переопределяет параметр, который уже имеет это там по умолчанию.Если вы используете tmux и iTerm2 в macOS ,
следующее изменяет курсор с блока на курсор и выделяет текущую строку
кредит: https://gist.github.com/andyfowler/1195581
источник
terminal-overrides
только добавляется, чтобы она не затирала,*:Ss=\E[%p1%d q:Se=\E[2 q
частьterminal-overrides
. так что моя конфигурация выглядит такset -sa terminal-overrides ",xterm-256color-italic:Tc"
(чтобы установить 24-битный цвет, разрешающий без нарушения стилей курсора Ss / Se.Чтобы изменить форму курсора в разных режимах, вы можете добавить в свой
.vimrc
файл следующее.Для терминала GNOME (версия 2.26):
Если вы используете более одного профиля в терминале GNOME, возможно, вам придется адаптировать его к своим профилям.
Для Konsole в KDE4:
Это работает с несколькими вкладками и окнами.
См. Также: « Изменение формы курсора в разных режимах » на Vim Tips Wiki .
источник
set ttimeoutlen=0
Вы можете попробовать плагин Terminus Vim :
источник
Я считаю полезным, чтобы курсор мигал только в режиме вставки и оставался неизменным в других режимах.
источник
Не уверен, что кто-то еще сталкивается с задержкой после нажатия Escклавиши, чтобы вернуться в нормальный режим, чтобы показать курсор блока, но если это так, я тоже это исправляю.
На самом деле я использую iTerm2 и использую Vim внутри своего терминала на macOS. И при входе в режим вставки курсор все еще является блоком, что сбивает с толку, когда вы находитесь в режиме вставки или в обычном режиме.
Я хотел показать тонкую линию в качестве курсора в режиме вставки и обратно в блок в нормальном режиме, как это делает MacVim. И для этого это довольно просто, просто добавил это в мой
.vimrc
файл, как описано здесь :Но, как вы можете видеть, была задержка при нажатии,
ESC
чтобы выйти из режима вставки обратно в нормальный режим и снова показать блок в виде курсора. Чтобы исправить это, я нашел следующее:И теперь, как вы можете видеть, все работает отлично:
Я надеюсь, что это может помочь кому-нибудь еще! 👻
источник
Я не думаю, что это добавляет много к ответам, которые уже предоставили другие люди, но я хотел как-то резюмировать вещи в одном месте, а также иметь ссылки на соответствующие ссылки.
Вот как выглядит соответствующий фрагмент из моего
.vimrc
:Примечание. На
'^['
самом деле символы представляют собой одинESC
управляющий символ (escape-последовательность).источник
Это правильно работает на xfce4-терминале:
добавьте следующий скрипт в свой
.vimrc
Кратко: Как вы знаете, xfce4-terminal сохраняет настройки в
.config/xfce4/terminal/terminalrc
файле. Сценарий меняетсяTERMINAL_CURSOR_SHAPE_BLOCK
на,TERMINAL_CURSOR_SHAPE_IBEAM
когда вы находитесь в режиме вставки, и обратно на блокировку, когда вы выходите из режима вставки или vim. Не стесняйтесь изменятьIBEAM
все , что вы хотите (BLOCK
,IBEAM
иUNDERLINE
доступен).источник
Если вы используете современную версию
nvim
и хотите добиться этого, вы можете избежать некоторых из этих причудливых обходных путей, перечисленных выше.Приведенные ниже настройки переключатся с блочного курсора в нормальном режиме на подчеркивание курсора при замене на строчный курсор при вставке.
Мне удалось заставить это работать со следующими настройками, взятыми из этих двух источников.
Tui-курсор-форма
гикурсор
источник
Среди прочего, у меня обычно есть текущий режим vim в строке состояния. Если вы ищете простоты, вы можете указать только эту информацию в строке состояния .
Однако обычно действительно безумные вещи случаются, когда у вас нажата клавиша Caps Lock и вы находитесь в командном режиме (так как hjkl теперь HJKL - достаточно J и K, чтобы вытащить волосы, когда вы не понимаете, что происходит.
:h J
и:h K
понять, что я имею в виду). Просто остерегайтесь клавиши Caps Lock, и большую часть времени вы будете в порядке, IMO.источник