Comment puis-je obtenir un curseur de bloc dans Vim dans le terminal Cygwin?

46

Je suis habitué à avoir un curseur de bloc en mode normal dans Vim. Cela a du sens avec le paradigme Vim; Lorsque vous appuyez sur x, le caractère à effacer est clairement indiqué.

J'ai installé Cygwin sur un ordinateur Windows, mais lorsque j'utilise Vim dans son terminal, le Icurseur est affiché, même en mode normal. Comment puis-je faire le curseur être un bloc à la place?

Kazark
la source

Réponses:

73

Cette question de la liste de diffusion Cygwin répond à la question en définissant des variables mystiques dans les séquences d'échappement appropriées. Ajoutez ceci à votre .vimrc:

let &t_ti.="\e[1 q"
let &t_SI.="\e[5 q"
let &t_EI.="\e[1 q"
let &t_te.="\e[0 q"
Kazark
la source
2
cela a fonctionné pour moi lorsque j'utilise mintty to ssh sur un serveur linux
zzapper
2
Merci beaucoup. Je dois aimer une solution propre qui fonctionne dans les 2 cas les plus embêtants :)
rld.
3
Agréable. Malheureusement, dans ConEmu, cela affecte le curseur pour toute la session. Cela dit, cela fonctionne comme prévu dans vim. Cela fonctionne également très bien dans l'émulateur de terminal de cygwin. Mais qui l'utilise? ;)
George Marian
Presque parfait ... mais lorsque vous quittez le mode insertion, il revient à un curseur de ligne jusqu'à ce que vous le déplaciez dans une direction.
Joe Coder
1
Travaillé pour moi dans la version de Vim installée automatiquement avec Cmder. Je vous remercie!
Bangash
33

Il y a un réglage pour cela, dans l'émulateur de terminal cygwin:

Cliquez avec le bouton droit de la souris sur la barre de titre de la fenêtre> Options> Apparences> Curseur> Bouton d'option Curseur.

Johnny Hoang
la source
Pour terminer, ce type d’options est identique à celui de n’importe quelle autre fenêtre de terminal Windows, c’est le Cygwin.
mveroone
6
Pro: my .vimrcpeut être plus compatible avec Linux ou Windows .vimrc. Con: maintenant j'ai le curseur de bloc en mode insertion, quand je voulais le Icurseur dans ce mode. +1
Kazark
5
la question portait sur le contrôle du curseur dans VIM, mais cette réponse a une incidence sur le curseur de toute la session de shell, à l'invite de commande et dans VIM
David Alpert
1
@ EdRandall c'est une question sur le terminal Cygwin AND vim. Cette réponse concerne le côté Cygwin de la question.
shmup
1
Cela ne répond pas complètement à la question. Vim utilise 2 types de curseurs. En mode normal, visuel ou commande, c'est un bloc. En mode insertion, c'est une barre verticale. Ces instructions concernent un changement en gros d'un émulateur de terminal spécifique (cygwin), bien que la plupart devraient avoir quelque chose de similaire. Ainsi, cela affecte le curseur partout dans le terminal et, plus important encore, il ne reproduit pas la fonctionnalité du curseur de vim.
George Marian
3

Créez un fichier ~/.minttyrc, ajoutez-y la ligne ci-dessous

CursorType=block

Relancez ensuite mintty, qui est le terminal par défaut de Cygwin.

qeatzy
la source
0

Ou, vous pouvez créer un fichier de commandes:

 %SYSTEMDRIVE%\cygwin\bin\mintty.exe ^
        -s 132,50 -o ScrollbackLines=10000 ^
        -o BackgroundColour=54,54,54 ^
        -o Transparency=High -o OpaqueWhenFocused=yes ^
        -o CursorColour=Green -o CursorType=block -o CursorBlinks=no ^
        -o Font=Consolas -o FontHeight=10 ^
        /bin/env CHERE_INVOKING=1 /bin/bash -l -i

Et lance-le.

Si vous n'aimez pas le curseur clignotant dans la fenêtre de commande DOS, utilisez-le à la %COMSPEC%place de /bin/env/...et soyez surpris.

Andreas Spindler
la source