Tetapkan nomor baris hanya saat dalam mode normal

8

Saya tidak memiliki banyak penggunaan untuk nomor baris saat dalam mode insert jadi saya ingin mematikannya. Namun mereka bagus untuk mode normal.

Terus-menerus menggunakan set nu!itu melelahkan. Apakah ada cara untuk mengikat set nu!untuk keluar dan masuk ke mode normal?

Adakah solusi menggunakan metode di atas atau lainnya?

Jason Basanese
sumber
Mengenai komentar Anda pada jawaban @ Carpetsmoker, mengapa Anda mempertahankan margin tetapi bukan nomor baris? Apa niat awal Anda untuk menyingkirkan angka-angka itu?
Rolf
Ini bertindak sebagai cara untuk membedakan antara mode memasukkan dan mode normal. Menghapus nomor baris juga berfungsi untuk menghapus informasi yang tidak relevan dari mode penyisipan. Jika setiap kali memasuki mode penyisipan Anda menghapus margin Anda cenderung mendapatkan sakit kepala dari semua teks yang bergeser tiga spasi setiap kali. Beberapa mungkin lebih suka ini, tetapi itu bukan preferensi saya.
Jason Basanese

Jawaban:

13

Anda dapat melakukan ini dengan perintah otomatis.

au InsertEnter * set nonumber
au InsertLeave * set number

Tidak banyak penjelasan yang dibutuhkan. Ini melakukan persis seperti yang Anda minta. Ini mengikat "memasuki dan keluar dari mode insert" ke "menghidupkan dan mematikan nomor garis".

James
sumber
1
Namun perlu dicatat, bahwa InsertLeave tidak terpicu, saat menggunakan Ctrl-C untuk keluar dari mode penyisipan
Christian Brabandt
5

Inilah solusi alternatif yang hanya akan menyembunyikan angka-angka, tetapi tidak akan benar-benar mengubah margin di sebelah kiri sehingga teks Anda tidak terlalu banyak ketika memasuki / meninggalkan mode penyisipan:

set number

augroup number
    autocmd!
    autocmd InsertEnter * highlight LineNr ctermfg=white guifg=white
    autocmd InsertLeave * highlight LineNr ctermfg=130 guifg=Brown
augroup end

Saat memasuki mode penyisipan ini akan mengatur warna teks ke warna latar belakang. Dalam kasus saya ini putih, tetapi ini mungkin berbeda dalam kasus Anda. Ketika kami meninggalkan mode penyisipan, ia akan mengatur ulang ke default untuk skema warna saya.

Anda dapat mengetahui default untuk skema warna Anda dengan:

:highlight LineNr
LineNr         xxx term=underline ctermfg=130 guifg=Brown
Martin Tournoij
sumber
3
Bahkan lebih baik:au InsertEnter * hi LineNr ctermbg=NONE ctermfg=bg guifg=bg
Christian Brabandt
Ini mungkin yang akan saya gunakan, tetapi jawaban yang lain lebih ringkas dan menjawab pertanyaan secara langsung.
Jason Basanese