Bagaimana saya bisa mendapatkan kursor blok di Vim di terminal Cygwin?

46

Saya terbiasa memiliki kursor blok dalam mode normal di Vim. Ini masuk akal dengan paradigma Vim; saat Anda menekan x, jelas karakter mana yang akan dihapus.

Saya telah menginstal Cygwin pada komputer Windows, tetapi ketika saya menggunakan Vim di terminalnya, saya mendapatkan Ikursor, bahkan dalam mode normal. Bagaimana saya bisa menjadikan kursor sebagai blok?

Kazark
sumber

Jawaban:

73

Pertanyaan ini di milis Cygwin menjawab pertanyaan dengan menetapkan beberapa variabel misterius ke urutan pelarian yang sesuai. Tambahkan ini ke Anda .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
sumber
2
ini bekerja untuk saya ketika menggunakan mintty untuk ssh ke server linux
zzapper
2
Terima kasih banyak. Harus menyukai solusi bersih yang berfungsi dalam 2 kasus paling menjengkelkan :)
rld.
3
Bagus. Sayangnya, di ConEmu ini mempengaruhi kursor untuk seluruh sesi. Yang mengatakan, itu berfungsi seperti yang diharapkan di vim. Ini juga berfungsi dengan baik di emulator terminal cygwin. Tapi, siapa yang menggunakannya? ;)
George Marian
Hampir sempurna ... tetapi ketika meninggalkan mode sisipkan, ia kembali ke kursor garis sampai Anda memindahkan kursor ke suatu arah.
Joe Coder
1
Bekerja untuk saya dalam versi Vim yang diinstal secara otomatis dengan Cmder. Terima kasih!
Bangash
33

Ada pengaturan untuk itu, di emulator terminal cygwin:

Klik kanan pada bilah judul jendela> Opsi> Tampak> Kursor> Tombol radio kursor

Johnny Hoang
sumber
Untuk menyelesaikannya, opsi semacam ini sama dengan jendela terminal windows lainnya, yaitu cygwin.
mveroone
6
Pro: my .vimrcbisa lebih kompatibel dengan Linux atau Windows saya .vimrc. Con: sekarang saya memiliki kursor blok dalam mode insert, ketika saya ingin Ikursor dalam mode itu. +1
Kazark
5
pertanyaannya adalah tentang mengendalikan kursor di VIM tetapi jawaban ini mempengaruhi kursor untuk seluruh sesi shell, baik pada command prompt dan di VIM
David Alpert
1
@ Edalland ini pertanyaan tentang terminal Cygwin DAN vim. Jawaban ini berkaitan dengan sisi Cygwin dari pertanyaan itu.
jared
1
Ini tidak menjawab pertanyaan sepenuhnya. Vim menggunakan 2 jenis kursor. Dalam mode normal, visual, atau perintah itu adalah blok. Dalam mode penyisipan, ini adalah bilah vertikal. Instruksi-instruksi ini adalah untuk perubahan besar-besaran dalam emulator terminal spesifik (cygwin), meskipun kebanyakan harus memiliki sesuatu yang serupa. Jadi, ini mempengaruhi kursor di mana-mana di terminal, dan, yang lebih penting, itu tidak meniru fungsi kursor vim.
George Marian
3

Buat file ~/.minttyrc, tambahkan baris di bawahnya

CursorType=block

Kemudian luncurkan kembali mintty, yang merupakan terminal default Cygwin.

qeatzy
sumber
0

Atau, Anda dapat membuat file batch:

 %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

Dan jalankan.

Jika Anda tidak menyukai kursor yang berkedip di jendela perintah DOS, gunakan juga %COMSPEC%alih-alih /bin/env/...dan kaget.

Andreas Spindler
sumber