Vim changement de couleur du curseur en mode insertion

Il est bon extrait de code pour modifier le curseur de couleur:

if &term =~ "xterm|rxvt"
  " use an orange cursor in insert mode
  let &t_SI = "<Esc>]12;orangex7"
  " use a red cursor otherwise
  let &t_EI = "<Esc>]12;redx7"
  silent !echo -ne "3]12;red7"
  " reset cursor when vim exits
  autocmd VimLeave * silent !echo -ne "3]1127"
  " use 3]12;gray7 for gnome-terminal
endif

Comment puis-je modifier ceci qu'au lieu du curseur, le curseur changerait de couleur par exemple du bleu foncé au bleu?

ma configuration complète est https://bitbucket.org/JackLeo/home-configs/src/5b8faf340f87/.vimrc

24
demandé sur JackLeo 2011-09-30 22:29:26

3 réponses

avez-vous regardé dans la commande 'highlight' qui est un moyen plus facile de contrôler cela.

par exemple, pour changer la ligne du curseur,

:hi CursorLine guifg=red guibg=blue

Référence: :aider à mettre en évidence

pour le faire passer d'un mode à l'autre.

" Enable CursorLine
set cursorline

" Default Colors for CursorLine
highlight  CursorLine ctermbg=Yellow ctermfg=None

" Change Color when entering Insert Mode
autocmd InsertEnter * highlight  CursorLine ctermbg=Green ctermfg=Red

" Revert Color to default when leaving Insert Mode
autocmd InsertLeave * highlight  CursorLine ctermbg=Yellow ctermfg=None

j'ai peut-être possible de mélanger termcap couleur avec autocmd, mais l'OMI, de souligner, c'est plus facile à maintenir dans le long terme (et dans le cas où si l'utilisation gVim de temps en temps)

29
répondu Zarick Lau 2011-10-01 09:49:14

c'est assez simple, mettez ce qui suit dans votre .vimrc ou custom colorscheme fichier.

set cursorline
autocmd InsertEnter * highlight CursorLine guifg=white guibg=blue ctermfg=white ctermbg=blue
autocmd InsertLeave * highlight CursorLine guifg=white guibg=darkblue ctermfg=white ctermbg=darkblue

pour plus d'information voir:

N. B: Vous pouvez utiliser la même méthode pour changer la couleur du curseur sans tous ces if-états et des séquences d'échappement (et cela fonctionnera également dans GVim).

6
répondu Johnsyweb 2011-10-01 10:19:00

lors de l ' utilisation de MacVim avec 'Lokaltog / vim-powerline' vous pouvez configurer vos couleurs normal/visual/insert pour qu'elles correspondent à la couleur du mode powerline. Je trouve cela extrêmement utile pour savoir dans quel mode je suis sans lire le powerline, surtout sur un grand écran.

voici le code que j'utilise, basé sur la réponse de @Zarick-Lau.

Dans mon colors/molokai.vim fichier:

" Visual Mode Orange Background, Black Text
hi Visual          guifg=#000000 guibg=#FD971F

" Default Colors for CursorLine
highlight CursorLine guibg=#3E3D32
highlight Cursor guibg=#A6E22E;

" Change Color when entering Insert Mode
autocmd InsertEnter * highlight  CursorLine guibg=#323D3E
autocmd InsertEnter * highlight  Cursor guibg=#00AAFF;

" Revert Color to default when leaving Insert Mode
autocmd InsertLeave * highlight  CursorLine guibg=#3E3D32
autocmd InsertLeave * highlight  Cursor guibg=#A6E22E;

voici un exemple utilisant la couleur originale de molokai régime.

Normal

normal mode (green

visuel

visual mode (orange)

Insert

insert mode (blue)

je trouve également utile de configurer le système D'exploitation pour sélectionner visuellement en utilisant la même couleur. Par exemple, j'ai changé ma couleur de surbrillance Orange dans OSX, et quand je sélectionne texte, c'est maintenant orange au lieu de bleu, comme dans VIM.

select orange highlight

Exemple

voici le surligneur orange utilisé dans la zone de texte pendant que j'écris cette entrée de débordement de pile. Maintenant, tout le texte que je sélectionne dans mon système d'exploitation correspond à la configuration VIM.

selecting text in the OS

3
répondu f1lt3r 2016-02-03 07:38:32