Aktif pencereyi vim'de daha belirgin yapmak


20

Çalışma alanım normalde vim ile çok büyük bir xterm, altı veya daha fazla tampona bölünmüş durumda. Hangisinin aktif tampon olduğu daha açık olsaydı gerçekten yardımcı olurdu. Şu anda bunun için satır numaralarının varlığını kullanıyorum:

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

ancak bu, arabellekleri değiştirdiğimde kodumun sola veya sağa zıpladığı, yani can sıkıcı olduğu anlamına gelir. Ayrıca, hangisinin 94 hatta hangisinin olduğunu görebilmek istiyorum. etkisiz tampon. Peki aktif tampondaki satır numaralarının renklerini değiştirmenin herhangi bir yolu var mı?

Yanıtlar:


19

Şablonunuzu takip ederek, colorcolumn gibi farklı özellikleri değiştirebilirsiniz:

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

Bu, diğer pencerede devre dışı bırakırken geçerli pencerenizde sütun 80'i renklendirir. Satır numaralarını ayarlamak / ayarlamaktan biraz daha az sıkıcı.

Geçerli çizgiyi vurgulamak için kullanılırsanız (cul kümesiyle) daha az müdahaleci bir seçenek yapmaktır:

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

Her şey kullanımınıza ve ne yapmak istediğinize bağlıdır.


6

Durum çizgisinin rengi, hangi pencerenin etkin olduğunu bilmenin en yaygın yoludur. Renk düzeninizde bu iki satırla tanımlanır:

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

Birincisi geçerli pencere içindir, ikincisi "güncel olmayan" pencere içindir.

Bu bir alıntı xoria256 , renkleri renk düzeninize uyarlamanız gerekir.

Ancak böyle bir şeyi deneyebilirsiniz (dikkat edin, ikinci satırdaki renkler tamamen rastgeledir):

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

WinEnter / WinLeave'deki LineNr vurgulamasını değiştirmeyi çoktan denedim, ancak LineNr renklendirmesinin global olduğu anlaşılıyor.
DrHyde

Evet ve bunu hatırlamak için yorumunuzu beklemem gerekiyordu. Yani, hayır, eğer LineNr global ise belli bir pencerede değiştirmenin hiçbir yolu yoktur. Durum çizgisinin yeterli olduğunu düşünmüyor musun?
romainl

LineNr'nin pencere başına başka bir sürümü olup olmadığını merak ettim. Ve hayır, durum çizgisinin yeterli olduğunu sanmıyorum. Yardımcı olur, ama daha fazlasını istiyorum. Durum satırını kullanmakla ilgili bir sorun, pencerenin altında etkin pencere göstergesine sahip olmanın, hemen hemen her yerdekilerin tam tersi olduğu - bir pencerenin tepesinde renk değiştiren bir başlık çubuğu - yani "ah evet, vim bunu tam tersi yapar" diye düşünmeyi duraklatır. Oysa satır numaraları her zaman , içinde her uygulama, aynı yerde.
DrHyde

Pencere arka plan rengini değiştirebilseydiniz gerçekten isterdim, ama yukarıdan geliyor ki, bu mümkün değil.
Jonathan Hartley


1

Bu benim işim:

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

Göreceli sayılar, komutların tekrarlanan miktarlarını hesaplamak için sadece bir yardımcıdır, düzenleme yapmadığınız bir pencerede bunların kullanımı yoktur.



0

Bunu kendi ~/.vimrcEtkin olmayan pencerelerin durum çubuklarını etkin pencerenin beyaz durum çubuğundan ayırt etmek için koyu gri bir arka planı olacak.

highlight StatusLineNC cterm=bold ctermfg=white ctermbg=darkgray

Bu ekran görüntüsü örneğine bakın. Orta pencere etkin (beyaz durum çubuğu). Sol ve sağ camlar etkin değildir (koyu gri durum çubuğu).

enter image description here

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.