Domanda Come cambio il cursore Vim in modalità Insert / Normal?


Vorrei sapere, se possibile, come cambiare il cursore in vim (colore, forma, ecc.) A seconda della modalità in cui ti trovi.

Mi dimentico costantemente che non sono in modalità di inserimento e inizio a digitare il codice, il che si traduce in tutti i tipi di cose pazzesche che accadono. Sarebbe utile se ci fosse una sorta di indicazione visiva sul cursore.


65
2018-06-27 04:49


origine


risposte:


Di solito ho la modalità Vim attuale sulla statusline, tra le altre cose. Se cerchi la semplicità, puoi impostare solo questa informazione sulla statusline.

Tuttavia, di solito le cose veramente pazze accadono quando hai il blocco delle maiuscole premuto e sei in modalità di comando (dal momento che hjkl ora sono HJKL - solo J e K sono sufficienti per farti tirare fuori i capelli quando non capisci cosa sta succedendo. :h J e :h K per vedere cosa intendo). Appena attenti al tasto di blocco maiuscole e starai bene la maggior parte del tempo IMO.


-3
2018-06-28 02:26



Un'opzione popolare per indicare il passaggio alla modalità Insert (e ritorno a Normal modo) sta commutando il cursorline opzione che è responsabile per se il la riga corrente dello schermo è evidenziata.

:autocmd InsertEnter,InsertLeave * set cul!

o

:autocmd InsertEnter * set cul
:autocmd InsertLeave * set nocul

72
2018-06-27 06:34



I seguenti lavori per xterm / urxvt / ... (Linux), iTerm2 (Mac), Git Bash con ConEmu (Windows) e altro (vedi commenti):

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

Quando usi tmux è importante che lo si usi in questo modo (senza a \<Esc>Ptmux; escape) - tmux manterrà traccia della corretta forma del cursore quando cambi finestra / riquadri. Potrebbe essere necessario impostare TERM=xterm-256color prima di avviare tmux se non funziona per te.

Altre opzioni (sostituisci il numero dopo \ 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).

21
2018-02-08 16:23



Per cambiare la forma del cursore in diverse modalità, puoi aggiungere quanto segue al tuo vimrc.

Per Gnome-Terminal (versione 2.26) Modifica

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

Se si utilizza più di un profilo in gnome-terminal, potrebbe essere necessario adattarlo ai propri profili.

Per Konsole in KDE4Edit

let &t_SI = "\<Esc>]50;CursorShape=1\x7"
let &t_EI = "\<Esc>]50;CursorShape=0\x7"

Funziona con più schede e finestre.

http://vim.wikia.com/wiki/Change_cursor_shape_in_different_modes


12
2018-06-27 04:54



Se stai usando tmux e iTerm2 sopra OSX,
il seguente cambia il cursore da un blocco a un cursore e evidenzia la linea corrente

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

credito: https://gist.github.com/andyfowler/1195581


12
2018-05-12 18:51



Trovo utile avere solo il cursore lampeggiante in modalità Insert e statico in altre modalità.

set guicursor+=n-v-c:blinkon0

5
2018-03-06 20:25



Puoi provare il plugin terminus vim:

In modalità di inserimento, la forma del cursore si trasforma in una sottile barra verticale. In modalità di sostituzione, cambia in una sottolineatura. Tornando alla modalità normale, ritorna alla forma standard di "blocco".


4
2018-01-19 17:16