Saya ingin tahu cara mengubah, jika memungkinkan, kursor di Vim (dalam warna, bentuk, dll.) Tergantung pada mode Anda.
Saya terus-menerus lupa bahwa saya tidak dalam mode Sisipkan dan mulai mengetik kode, yang mengakibatkan banyak hal gila terjadi. Akan sangat membantu jika ada semacam indikasi visual pada kursor.
Jawaban:
Opsi populer untuk menunjukkan peralihan ke dan dari mode Sisipkan adalah mengubah
cursorline
opsi, yang bertanggung jawab atas apakah garis layar saat ini disorot (lihat:help cursorline
):atau, sebagai alternatif,
Ubah
CursorLine
grup penyorotan untuk mengubah gaya garis kursor sesuai keinginan Anda (lihat:help :highlight
dan:help highlight-groups
).sumber
cursorline
Opsi ini tidak bergantung pada kemampuan khusus platform apa pun; ini tersedia pada setiap instance Vim yang dikompilasi dengan+syntax
fitur tersebut (yang biasanya terjadi).echo 'autocmd InsertEnter,InsertLeave * set cul!' >>~/.vimrc
Berikut ini bekerja di xterm, urxvt, dan emulator terminal lainnya di Linux; iTerm2 di macOS; Git Bash dengan ConEmu di Windows; dan lainnya (lihat komentar):
Opsi lain (ganti nomor setelah
\e[
):Saat Anda menggunakan tmux , penting untuk menggunakannya seperti itu (tanpa
\<Esc>Ptmux;
escape). tmux akan melacak bentuk kursor yang benar saat Anda beralih jendela / panel.Jika tidak berhasil untuk Anda, coba atur
TERM=xterm-256color
sebelum memulai tmux, atau tambahkan ini ke Anda.tmux.conf
( terima kasih @Steven Lu ):sumber
set -ga terminal-overrides ',*:Ss=\E[%p1%d q:Se=\E[2 q'
dalam konfigurasi tmux saya. Rupanya jika Anda menggunakanset
untukterminal-overrides
tanpa-a
, itu akan menimpa pengaturan, yang sudah memiliki ini di sana secara default.Jika Anda menggunakan tmux dan iTerm2 di macOS ,
berikut ini mengubah kursor dari blok ke kursor dan menyorot baris saat ini
kredit: https://gist.github.com/andyfowler/1195581
sumber
terminal-overrides
hanya ditambahkan, jadi tidak mengganggu,*:Ss=\E[%p1%d q:Se=\E[2 q
bagian dariterminal-overrides
. jadi konfigurasi saya terlihat sepertiset -sa terminal-overrides ",xterm-256color-italic:Tc"
(untuk mengaktifkan warna 24-bit tanpa menginjak-injak gaya kursor Ss / Se.Untuk mengubah bentuk kursor dalam mode yang berbeda, Anda dapat menambahkan berikut ini ke dalam
.vimrc
file Anda .Untuk Terminal GNOME (versi 2.26):
Jika Anda menggunakan lebih dari satu profil di Terminal GNOME, Anda mungkin harus menyesuaikannya dengan profil Anda.
Untuk Konsole di KDE4:
Ini berfungsi dengan banyak tab dan jendela.
Lihat juga: " Mengubah bentuk kursor dalam mode berbeda " di Vim Tips Wiki .
sumber
set ttimeoutlen=0
Anda dapat mencoba plugin Terminus Vim :
sumber
Saya merasa berguna jika kursor hanya berkedip dalam mode Sisipkan dan tetap statis dalam mode lain.
sumber
Tidak yakin apakah ada orang lain yang menghadapi penundaan setelah menekan Esctombol untuk kembali ke mode normal untuk menampilkan kursor blok tetapi jika demikian, ini adalah cara saya memperbaikinya juga.
Sebenarnya saya menggunakan iTerm2 dan menggunakan Vim di dalam terminal saya di macOS. Dan saat masuk ke mode sisip, kursor masih menjadi blok dan agak membingungkan saat Anda berada di mode sisip atau mode normal.
Saya ingin menunjukkan garis tipis sebagai kursor ketika dalam mode penyisipan dan kembali untuk memblokir ketika dalam mode normal seperti yang dilakukan MacVim. Dan untuk melakukannya sangat sederhana, cukup tambahkan ini ke
.vimrc
file saya seperti yang dijelaskan di sini :Tetapi seperti yang Anda lihat, ada penundaan ketika menekan
ESC
untuk keluar dari mode penyisipan kembali ke mode normal dan menampilkan blok sebagai kursor lagi. Jadi untuk memperbaikinya saya menemukan ini:Dan sekarang berfungsi dengan baik seperti yang Anda lihat:
Saya harap ini bisa membantu orang lain! 👻
sumber
Saya tidak berpikir ini menambah banyak jawaban yang telah diberikan orang lain tetapi saya ingin meringkas berbagai hal di satu tempat dan juga memiliki tautan ke referensi yang relevan.
Seperti inilah cuplikan relevan dari
.vimrc
penampilanku:Catatan:
'^['
Karakter sebenarnya adalah satuESC
karakter kontrol (escape sequence).sumber
Ini bekerja dengan baik di xfce4-terminal:
tambahkan skrip berikut ke
.vimrc
Singkat: Seperti yang Anda ketahui xfce4-terminal menyimpan preferensi dalam
.config/xfce4/terminal/terminalrc
file. Skrip berubahTERMINAL_CURSOR_SHAPE_BLOCK
menjadiTERMINAL_CURSOR_SHAPE_IBEAM
saat Anda dalam mode penyisipan, dan kembali memblokir saat Anda keluar dari mode penyisipan atau vim. Jangan ragu untuk mengubahIBEAM
apa pun yang Anda inginkan (BLOCK
,IBEAM
danUNDERLINE
tersedia).sumber
Jika Anda menggunakan versi modern
nvim
dan ingin mencapainya, Anda dapat menghindari beberapa solusi mewah yang tercantum di atas.Pengaturan di bawah ini akan beralih dari kursor blok dalam mode normal, untuk menggarisbawahi kursor sebagai ganti ke kursor garis di sisipkan.
Saya berhasil mendapatkan ini bekerja dengan pengaturan berikut yang ditarik dari dua sumber ini.
tui-cursor-shape
kursor
sumber
Saya biasanya memiliki mode vim saat ini ke statusline, antara lain. Jika Anda mencari kesederhanaan, Anda hanya dapat menyetel informasi ini ke baris status .
Namun, biasanya hal-hal yang benar-benar gila terjadi ketika Anda memiliki caps lock tertekan dan berada dalam mode perintah (karena hjkl sekarang adalah HJKL - J dan K saja sudah cukup untuk membuat Anda menarik rambut Anda ketika Anda tidak mengerti apa yang terjadi.
:h J
dan:h K
untuk melihat apa yang saya maksud). Hanya berhati-hatilah tombol caps lock dan Anda akan baik-baik saja sebagian besar waktu IMO.sumber