Jak mogę uzyskać kursor blokowy w Vimie w terminalu Cygwin?

46

Jestem przyzwyczajony do posiadania kursora blokowego w trybie normalnym w Vimie. Ma to sens w przypadku paradygmatu Vima; po naciśnięciu xwiadomo, który znak zostanie usunięty.

Zainstalowałem Cygwin na komputerze z systemem Windows, ale kiedy używam Vima w jego terminalu, dostaję Ikursor, nawet w trybie normalnym. Jak zamiast tego mogę ustawić kursor w blok?

Kazark
źródło

Odpowiedzi:

73

To pytanie z listy mailingowej Cygwin odpowiada na to pytanie, ustawiając niektóre tajemne zmienne w odpowiednich sekwencjach ucieczki. Dodaj to do .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
źródło
2
działało to dla mnie przy użyciu mintty do ssh do serwera Linux
zzapper
2
Dziękuję bardzo. Uwielbiam czyste rozwiązanie, które działa w 2 najbardziej irytujących przypadkach :)
rld.
2
Miły. Niestety w ConEmu wpływa to na kursor dla całej sesji. To powiedziawszy, działa zgodnie z oczekiwaniami w vim. Działa również dobrze w emulatorze terminalowym cygwina. Ale kto tego używa? ;)
George Marian
Prawie idealnie ... ale po wyjściu z trybu wstawiania powraca do kursora liniowego, dopóki nie przesuniesz kursora w określonym kierunku.
Joe Coder
1
Pracował dla mnie w wersji Vima instalowanej automatycznie z Cmder. Dziękuję Ci!
Bangash
33

Jest to ustawienie w emulatorze terminalowym cygwin:

Kliknij prawym przyciskiem myszy pasek tytułu okna> Opcje> Wygląd> Kursor> Przycisk opcji Kursor

Johnny Hoang
źródło
Aby zakończyć, tego rodzaju opcje są takie same jak w każdym innym oknie terminala Windows, którym jest cygwin.
mveroone
6
Pro: mój .vimrcmoże być bardziej kompatybilny z moim systemem Linux lub Windows .vimrc. Przeciw: teraz mam kursor blokowy w trybie wstawiania, kiedy chciałem Ikursor w tym trybie. +1
Kazark
5
pytanie dotyczyło sterowania kursorem w VIM, ale ta odpowiedź wpływa na kursor dla całej sesji powłoki, zarówno w wierszu polecenia, jak iw VIM
David Alpert
1
@EdRandall to pytanie o terminal Cygwin AND vim. Ta odpowiedź dotyczy strony pytania Cygwin.
jared
1
To nie odpowiada całkowicie na pytanie. Vim używa 2 rodzajów kursorów. W trybie normalnym, wizualnym lub komendowym jest to blok. W trybie wstawiania jest to pionowy pasek. Instrukcje te dotyczą hurtowej zmiany określonego emulatora terminala (cygwin), chociaż większość powinna mieć coś podobnego. Tak więc wpływa na kursor wszędzie w terminalu, a co ważniejsze, nie naśladuje funkcji kursora vima.
George Marian,
3

Utwórz plik ~/.minttyrc, dodaj do niego poniższy wiersz

CursorType=block

Następnie uruchom ponownie mintty, który jest domyślnym terminalem Cygwin.

qeatzy
źródło
0

Lub możesz utworzyć plik wsadowy:

 %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

I uruchom to.

Jeśli nie podoba ci się migający kursor w oknach poleceń DOS, również użyj %COMSPEC%zamiast niego /bin/env/...i bądź zaskoczony.

Andreas Spindler
źródło