Wie kann ich einen Blockcursor in Vim im Cygwin-Terminal erhalten?

46

Ich bin es gewohnt, in Vim einen Blockcursor im normalen Modus zu haben. Dies ist beim Vim-Paradigma sinnvoll. Wenn Sie drücken x, ist klar, welches Zeichen gelöscht wird.

Ich habe Cygwin auf einem Windows-Computer installiert, aber wenn ich Vim in seinem Terminal verwende, erhalte ich den ICursor, auch im normalen Modus. Wie kann ich den Cursor stattdessen zu einem Block machen?

Kazark
quelle

Antworten:

73

Diese Frage auf der Cygwin-Mailingliste beantwortet die Frage, indem einige arkane Variablen auf die entsprechenden Escape-Sequenzen gesetzt werden. Fügen Sie dies zu Ihrem hinzu .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
quelle
2
Dies funktionierte für mich, als ich mit Mintty ssh auf einen Linux-Server verwendete
zzapper
2
Ich danke dir sehr. Muss ich lieben eine saubere Lösung, die in 2 ärgerlichsten Fällen
funktioniert
2
Nett. Leider betrifft dies in ConEmu den Cursor für die gesamte Sitzung. Das heißt, es funktioniert wie erwartet in vim. Es funktioniert auch gut in Cygwins Terminal-Emulator. Aber wer nutzt das? ;)
George Marian
Fast perfekt ... aber wenn Sie den Einfügemodus verlassen, kehren Sie zu einem Zeilencursor zurück, bis Sie den Cursor in eine Richtung bewegen.
Joe Coder
1
Arbeitete für mich in der Version von Vim, die automatisch mit Cmder installiert wurde. Dankeschön!
Bangash
33

Dafür gibt es im Cygwin-Terminal-Emulator eine Einstellung:

Klicken Sie mit der rechten Maustaste auf die Titelleiste des Fensters> Optionen> Looks> Cursor> Optionsfeld Cursor

Johnny Hoang
quelle
Um dies zu vervollständigen, sind diese Optionen dieselben wie bei jedem anderen Windows-Terminalfenster, das Cygwin ist.
mveroone
6
Pro: my .vimrckann mit meinem Linux oder Windows kompatibler sein .vimrc. Con: Jetzt habe ich den Blockcursor im Einfügemodus, als ich den ICursor in diesem Modus haben wollte. +1
Kazark
5
Die Frage bezog sich auf die Steuerung des Cursors in VIM. Diese Antwort wirkt sich jedoch auf den Cursor für die gesamte Shell-Sitzung aus, sowohl an der Eingabeaufforderung als auch in VIM
David Alpert
1
@EdRandall das ist eine frage zum cygwin terminal AND vim. Diese Antwort bezieht sich auf die Cygwin-Seite der Frage.
Jared
1
Dies beantwortet die Frage nicht vollständig. Vim verwendet zwei Arten von Cursorn. Im normalen, visuellen oder Befehlsmodus ist es ein Block. Im Einfügemodus ist es eine vertikale Leiste. Diese Anweisungen beziehen sich auf eine umfassende Änderung in einem bestimmten Terminalemulator (Cygwin), obwohl die meisten eine ähnliche Funktion haben sollten. Daher wirkt es sich überall im Terminal auf den Cursor aus, und, was noch wichtiger ist, es ahmt nicht die Cursor-Funktionalität von vim nach.
George Marian
3

Erstellen Sie eine Datei ~/.minttyrcund fügen Sie sie unterhalb der Zeile hinzu

CursorType=block

Starten Sie anschließend minttydas Standardterminal von Cygwin neu.

qeatzy
quelle
0

Sie können auch eine Batchdatei erstellen:

 %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

Und lass es laufen.

Wenn Ihnen der blinkende Cursor in den DOS-Befehlsfenstern nicht gefällt, verwenden Sie %COMSPEC%stattdessen /bin/env/...und seien Sie überrascht.

Andreas Spindler
quelle