Bardziej przydatna linia statusu w vimie? [Zamknięte]

150

Chciałbym, aby moja linia statusu w vimie była bardziej pouczająca i interesująca, a do tego potrzebuję kilku pomysłów. Jak dostosowałeś swoją linię statusu?

sica07
źródło
5
@paxdiablo: Czasami warto poświęcić czas na skonfigurowanie narzędzia do swoich potrzeb, aby móc go lepiej wykorzystać, a tym samym zaoszczędzić czas podczas pracy.
DarkDust
10
Powinno to być wiki społeczności, ponieważ nie ma poprawnej odpowiedzi.
Randy Morris,
3
Nie chodzi tu tylko o opinie, ale o wykorzystanie doświadczenia i wiedzy bardziej uczonych osób. Pytający szuka informacji, których nie może odgadnąć, a nie prosi o rywalizację o to, co najlepsze. Odpowiedzi wygenerują szereg opcji, których wcześniej nie miał. Tylko dlatego, że pytanie ma więcej niż jedną odpowiedź, nie oznacza, że ​​nie jest to pytanie oparte na wiedzy technicznej. To pytanie dobrze pasuje do formatu SO i powinno pozostać otwarte.
NeilG

Odpowiedzi:

134

Edytować:-

Uwaga, vim-airline zyskuje na popularności jako nowa opcja vimscript, ponieważ powerline przeszło na Pythona.


Wygląda na to, że w dzisiejszych czasach jest tam powerline : -

Normalna linia stanu

linia napięcia

Dostosowane linie statusu dla innych wtyczek (np. Ctrlp )

linia napięcia

Gavin Gilmour
źródło
3
@Gavin jak mogę zmienić segmenty linii energetycznej? czy możesz zaktualizować niektóre domyślne skrypty modyfikujące segmenty? okrzyki
Jerry Gao
@Gavin Ja również byłbym wdzięczny, gdybyś mógł podzielić się tym, jak włączyłeś takie rzeczy jak twój oddział do vim-powerline
Eric Hu
1
Nic specjalnego nie zrobiono, z: github.com/Lokaltog/vim-powerline#troubleshooting po prostu upewnij się, że masz w pliku vimrc "let g: Powerline_symbols = 'fantazyjne'" i masz zainstalowane załatane czcionki.
Gavin Gilmour,
to jest fajna wtyczka. Ale moja wydajność przewijania po pierwszym otwarciu pliku jest z tego powodu bardzo niska.
Ahmed Aeon Axan
2
@AhmedAeonAxan wypróbuj linie lotnicze, zaczyna się szybko (czysty vimscript). A konfiguracja wymaga znacznie mniej wysiłku, zwłaszcza w przypadku Vundle lub Pathogen. Po zainstalowaniu czcionki Powerline będzie ona mniej więcej przypominać linie lotnicze. github.com/Lokaltog/powerline-fonts
snowbound
60

To moje:

set statusline=
set statusline +=%1*\ %n\ %*            "buffer number
set statusline +=%5*%{&ff}%*            "file format
set statusline +=%3*%y%*                "file type
set statusline +=%4*\ %<%F%*            "full path
set statusline +=%2*%m%*                "modified flag
set statusline +=%1*%=%5l%*             "current line
set statusline +=%2*/%L%*               "total lines
set statusline +=%1*%4v\ %*             "virtual column number
set statusline +=%2*0x%04B\ %*          "character under cursor

vim statusline

A oto kolory, których użyłem:

hi User1 guifg=#eea040 guibg=#222222
hi User2 guifg=#dd3333 guibg=#222222
hi User3 guifg=#ff66ff guibg=#222222
hi User4 guifg=#a0ee40 guibg=#222222
hi User5 guifg=#eeee40 guibg=#222222
Tassos
źródło
1
c jest właściwie liczbą bajtów, nawet jeśli czasami nazywa się to liczbą kolumn, nawet w pomocy vima. Możesz użyć v, aby uzyskać, co zwykle oznacza numer kolumny.
Ludwig Weinzierl,
Dzięki @Ludwig, nie zauważyłem tego. Zmienię odpowiedź.
Tassos,
8
Uwielbiam przejrzystość komentowania każdej dodanej wartości w jej własnym wierszu. Gdybym zrobił to 7 lat temu, nie wyrzuciłbym tego podczas ostatniej czystej instalacji systemu operacyjnego.
Bruno Bronosky
Słodko! Jedną rzeczą, której mi brakuje, jest linia oddzielająca podzieloną sesję
Julio Marins
1
@trusktr Zauważ, że guifgi guibgsą dla gvim. Jeśli używasz vimw terminalu, spróbuj ctermfgi ctermbgzamiast. Będziesz także potrzebował różnych kolorów, liczb 1-16 lub 1-256, w zależności od tego, ile kolorów włączyłeś w vimie. Odpowiednie kolory dla każdego numeru.
joelostblom
46

To jest ten, którego używam:

set statusline=
set statusline+=%7*\[%n]                                  "buffernr
set statusline+=%1*\ %<%F\                                "File+path
set statusline+=%2*\ %y\                                  "FileType
set statusline+=%3*\ %{''.(&fenc!=''?&fenc:&enc).''}      "Encoding
set statusline+=%3*\ %{(&bomb?\",BOM\":\"\")}\            "Encoding2
set statusline+=%4*\ %{&ff}\                              "FileFormat (dos/unix..) 
set statusline+=%5*\ %{&spelllang}\%{HighlightSearch()}\  "Spellanguage & Highlight on?
set statusline+=%8*\ %=\ row:%l/%L\ (%03p%%)\             "Rownumber/total (%)
set statusline+=%9*\ col:%03c\                            "Colnr
set statusline+=%0*\ \ %m%r%w\ %P\ \                      "Modified? Readonly? Top/bot.

Podkreślić? funkcjonować:

function! HighlightSearch()
  if &hls
    return 'H'
  else
    return ''
  endif
endfunction

Kolory (na podstawie ligh2011.vim):

hi User1 guifg=#ffdad8  guibg=#880c0e
hi User2 guifg=#000000  guibg=#F4905C
hi User3 guifg=#292b00  guibg=#f4f597
hi User4 guifg=#112605  guibg=#aefe7B
hi User5 guifg=#051d00  guibg=#7dcc7d
hi User7 guifg=#ffffff  guibg=#880c0e gui=bold
hi User8 guifg=#ffffff  guibg=#5b7fbb
hi User9 guifg=#ffffff  guibg=#810085
hi User0 guifg=#ffffff  guibg=#094afe

Moja linia statusu

Zmieniać załogę
źródło
2
Fajnie, to pozwala uniknąć konieczności posiadania wymyślnych wtyczek linii statusu przynajmniej dla mojego przypadku użycia, cukierek dla oczu :)
Nishant
1
Jak sprawić, by kolory działały?
trusktr
Próbowałem umieścić to po ustawieniu dowolnego colorscheme, ale widzę tylko dwukolorową linię statusu.
trusktr
@trusktr, Niełatwe do wyjaśnienia ... Musisz umieścić pierwsze 2 bloki w pliku vimrc i blok kolorów w bieżącym pliku colorscheme. Możesz znaleźć swój bieżący plik schematu kolorów za pomocą tego polecenia::colorscheme
Reman
1
Twoje wyszukiwanie podświetlenia byłoby krótsze (bez żadnej funkcji) po prostu przy użyciu operatora trójskładnikowego, takiego jak ten -> echo &hls ? 'H' : '' w moim przypadku:let &stl.="%6*%01(%{&hls?'H':''}%)%0* "
SergioAraujo
20

Co znalazłem użyteczne jest, aby wiedzieć, które kopiuj / wklej bufora (rejestr) jest aktualnie aktywny %{v:register}. W przeciwnym razie moja pełna linia statusu wygląda prawie dokładnie tak, jak standardowa linia.

:set statusline=%<%f\ %h%m%r\ %y%=%{v:register}\ %-14.(%l,%c%V%)\ %P
DarkDust
źródło
2
Ojej, v:registerwygląda to naprawdę bardzo przydatne!
nperson325681,
Co to znaczy, że rejestr jest aktywny? Moje (złe) zrozumienie rejestrów jest takie, że były one w zasadzie schowkami do przechowywania tekstu.
Roymunson,
15

Czasami mniej znaczy więcej, czy naprawdę musisz znać procent z pliku, którym jesteś podczas kodowania? A co z typem pliku?

set statusline=%F%m%r%h%w\ 
set statusline+=%{fugitive#statusline()}\    
set statusline+=[%{strlen(&fenc)?&fenc:&enc}]
set statusline+=\ [line\ %l\/%L]          
set statusline+=%{rvm#statusline()}       

linia stanu

linia stanu

Wolę też minimalny kolor, aby nie odwracać uwagi od kodu.

Zaczerpnięte z: https://github.com/krisleech/vimfiles

Uwaga: rvm#statuslinejest specyficzny dla Rubiego i fugitive#statuslinespecyficzny dla gita.

Kris
źródło
1
+1 dla linii statusu związanej z gitem
Patrick
3

Obecnie używam tych ustawień paska stanu:

set laststatus=2
set statusline=\ %f%m%r%h%w\ %=%({%{&ff}\|%{(&fenc==\"\"?&enc:&fenc).((exists(\"+bomb\")\ &&\ &bomb)?\",B\":\"\")}%k\|%Y}%)\ %([%l,%v][%p%%]\ %)

Mój kompletny plik .vimrc: http://gabriev82.altervista.org/projects/vim-configuration/

gabriev82
źródło
1

set statusline=%<%f%m\ \[%{&ff}:%{&fenc}:%Y]\ %{getcwd()}\ \ \[%{strftime('%Y/%b/%d\ %a\ %I:%M\ %p')}\]\ %=\ Line:%l\/%L\ Column:%c%V\ %P

To jest moje, podaj jako sugestię

zimaTTr
źródło