Membuat jendela aktif dalam vim lebih jelas


22

Ruang kerja saya biasanya satu xterm yang sangat besar dengan vim, dibagi menjadi enam atau lebih buffer. Akan sangat membantu jika lebih jelas yang mana buffer aktif. Saat ini saya menggunakan keberadaan nomor baris untuk ini:

augroup BgHighlight
    autocmd!
    autocmd WinEnter * set number
    autocmd WinLeave * set nonumber
augroup END

tetapi ini berarti bahwa ketika saya mengubah buffer kode saya melompat ke kiri atau kanan, yang menjengkelkan. Plus, saya ingin dapat melihat baris 94 mana bahkan dalam buffer tidak aktif . Jadi apakah ada cara untuk mengubah warna nomor baris di buffer aktif?

Jawaban:


26

Mengikuti templat Anda, Anda dapat memvariasikan properti yang berbeda, seperti kolom warna:

augroup BgHighlight
    autocmd!
    autocmd WinEnter * set colorcolumn=80
    autocmd WinLeave * set colorcolumn=0
augroup END

Ini akan mewarnai kolom 80 pada jendela Anda saat ini, sementara menonaktifkannya di jendela lainnya. Ini sedikit kurang menggelegar daripada pengaturan / tidak menyetel nomor baris.

Opsi yang bahkan lebih tidak mengganggu, jika Anda terbiasa menyoroti garis saat ini (set cul), adalah melakukan:

augroup BgHighlight
    autocmd!
    autocmd WinEnter * set cul
    autocmd WinLeave * set nocul
augroup END

Semuanya tergantung pada penggunaan Anda dan apa yang Anda bersedia lakukan.


11

Warna dari baris status adalah cara paling umum untuk mengetahui jendela mana yang aktif. Ini didefinisikan dalam skema warna Anda dengan dua baris ini:

hi StatusLine   ctermfg=15  guifg=#ffffff ctermbg=239 guibg=#4e4e4e cterm=bold gui=bold
hi StatusLineNC ctermfg=249 guifg=#b2b2b2 ctermbg=237 guibg=#3a3a3a cterm=none gui=none

Yang pertama adalah untuk jendela saat ini, yang kedua adalah untuk jendela "tidak saat ini".

Ini adalah kutipan dari xoria256 , Anda harus menyesuaikan warna dengan skema warna Anda.

Tetapi Anda dapat mencoba sesuatu seperti itu (berhati-hatilah, warna pada baris kedua benar-benar acak):

augroup NrHighlight
  autocmd!
  autocmd WinEnter * hi LineNr ctermfg=247 guifg=#9e9e9e ctermbg=233 guibg=#121212
  autocmd WinLeave * hi LineNr ctermfg=274 guifg=#e9e9e9 ctermbg=133 guibg=#212121
augroup END

Saya sudah mencoba mengubah penyorotan LineNr pada WinEnter / WinLeave, tetapi tampaknya pewarnaan LineNr bersifat global.
DrHyde

Ya, dan saya harus menunggu komentar Anda untuk mengingatnya. Jadi, tidak, jika LineNr bersifat global, jelas tidak ada cara untuk mengubahnya di jendela tertentu. Tidakkah menurut Anda status sudah cukup?
romainl

Saya bertanya-tanya apakah mungkin ada beberapa LineNr versi per-jendela lainnya. Dan tidak, saya pikir garis status tidak cukup. Ini membantu, tapi saya ingin lebih. Salah satu masalah dengan menggunakan baris status adalah memiliki indikator jendela aktif di bagian bawah jendela adalah kebalikan dari apa yang kita miliki di tempat lain - bilah judul di bagian atas jendela yang berubah warna - jadi ada beberapa saat berhenti sejenak untuk berpikir "oh yeah, vim melakukan ini sebaliknya". Sedangkan nomor garis selalu , di setiap aplikasi, di tempat yang sama.
DrHyde

Saya sangat suka jika Anda dapat mengubah warna latar belakang jendela, tapi sepertinya, dari atas, ini tidak mungkin.
Jonathan Hartley

Menggunakan hi StatusLine...dan hi StatusLineNC...bekerja seperti pesona!
Luc M


2

Inilah yang saya lakukan:

augroup BgHighlight
    autocmd!
    autocmd WinEnter * set relativenumber
    autocmd WinLeave * set norelativenumber
augroup END

Angka relatif hanyalah bantuan untuk menghitung jumlah perintah yang berulang, tidak ada gunanya di jendela yang tidak Anda edit.



1

Anda dapat menambahkan ini ke Anda ~/.vimrc, yang akan membuat bilah status windows tidak aktif memiliki latar belakang abu-abu gelap untuk membedakan dari bilah status putih jendela aktif.

highlight StatusLineNC cterm=bold ctermfg=white ctermbg=darkgray

Lihat contoh tangkapan layar ini. Jendela tengah aktif (bilah status putih). Jendela kiri dan kanan tidak aktif (bilah status abu-abu gelap).

masukkan deskripsi gambar di sini

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.