Baris status yang lebih berguna di vim? [Tutup]

150

Saya ingin membuat status saya dalam vim lebih informatif dan menarik, dan untuk itu saya perlu beberapa ide. Bagaimana Anda menyesuaikan garis status Anda?

sica07
sumber
5
@paxdiablo: Terkadang ada baiknya menghabiskan waktu untuk mengkonfigurasi alat sesuai kebutuhan Anda sehingga Anda dapat memanfaatkannya dengan lebih baik sehingga menghemat waktu saat bekerja.
DarkDust
10
Ini harus menjadi wiki komunitas karena tidak ada jawaban yang benar.
Randy Morris
3
Ini bukan tentang pendapat, melainkan memanfaatkan pengalaman dan keahlian individu yang lebih terpelajar. Penanya mencari informasi yang tidak dapat dia tebak, tidak meminta individu untuk bersaing tentang apa yang terbaik. Jawaban akan menghasilkan sejumlah opsi yang sebelumnya tidak ia miliki. Hanya karena sebuah pertanyaan memiliki lebih dari satu jawaban tidak berarti itu bukan pertanyaan berdasarkan keahlian teknis. Pertanyaan ini cocok dengan format SO dengan baik dan harus tetap terbuka.
NeilG

Jawaban:

134

Edit: -

Catatan vim-airline mendapatkan daya tarik sebagai opsi vimscript baru karena powerline telah menjadi python.


Tampak powerline di mana itu pada hari ini: -

Baris status normal

kabel listrik

Baris status khusus untuk plugin lain (mis. Ctrlp )

kabel listrik

Gavin Gilmour
sumber
3
@ Gavin bagaimana saya bisa berubah ke segmen saluran listrik Anda? dapatkah Anda memperbarui beberapa skrip modifikasi segmen default? Cheers
Jerry Gao
@ Gavin I juga akan sangat menghargai jika Anda dapat membagikan bagaimana Anda memasukkan hal-hal seperti cabang Anda di vim-powerline
Eric Hu
1
Tidak ada yang istimewa yang dilakukan, dari: github.com/Lokaltog/vim-powerline#troubleshooting hanya pastikan Anda memiliki "let g: Powerline_symbols = 'fancy'" di file vimrc Anda dan telah memasang font yang dipasang.
Gavin Gilmour
ini adalah plugin yang bagus. Tapi kinerja bergulir saya ketika saya pertama kali membuka file sangat sangat buruk karena ini.
Ahmed Aeon Axan
2
@AhmedAeonAxan mencoba maskapai, ini dimulai dengan cepat (skrip murni). Dan membutuhkan lebih sedikit upaya untuk pengaturan, terutama dengan Vundle atau Pathogen. Dan begitu Anda menginstal font powerline, kurang lebih seperti maskapai penerbangan. github.com/Lokaltog/powerline-fonts
salju
60

Ini milik saya:

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

Dan inilah warna yang saya gunakan:

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
sumber
1
c sebenarnya adalah jumlah byte, bahkan jika kadang-kadang disebut jumlah kolom bahkan dalam bantuan vim. Anda dapat menggunakan v untuk mendapatkan apa yang biasanya dimaksud dengan nomor kolom.
Ludwig Weinzierl
Terima kasih @Ludwig, saya belum menyadarinya. Saya akan mengedit jawabannya.
Tassos
8
Saya suka kejelasan dari komentar setiap nilai yang ditambahkan pada baris itu sendiri. Jika saya melakukannya 7 tahun yang lalu, saya tidak akan membuangnya ketika saya melakukan instalasi OS bersih terakhir saya.
Bruno Bronosky
Sweeet! Satu hal yang saya lewatkan menggunakan ini adalah garis yang memisahkan sesi terpisah
Julio Marins
1
@trusktr Perhatikan itu guifgdan guibguntuk gvim. Jika Anda menjalankan vimdi terminal, cobalah ctermfgdan ctermbgsebaliknya. Anda juga akan membutuhkan warna yang berbeda, angka 1-16 atau 1-256 tergantung pada berapa banyak warna yang telah Anda aktifkan di vim. Warna yang sesuai untuk setiap nomor.
joelostblom
46

Ini yang saya gunakan:

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.

Sorot aktif? fungsi:

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

Warna (diadaptasi dari 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

StatusLine saya

Merebut kembali
sumber
2
Bagus, ini menghindari kebutuhan untuk memiliki plugin garis status mewah setidaknya untuk kasus penggunaan saya, eye candy :)
Nishant
1
Bagaimana Anda membuat warna bekerja?
trusktr
Saya mencoba meletakkan ini setelah semua colorschemediatur, tetapi saya hanya melihat status nada ganda.
trusktr
@trusktr, Tidak mudah dijelaskan .... Anda perlu meletakkan 2 blok pertama di file vimrc Anda dan blok warna di file colorscheme Anda saat ini. Anda dapat menemukan file colorscheme Anda saat ini dengan perintah ini::colorscheme
Reman
1
Pencarian sorotan Anda akan lebih pendek (tanpa fungsi apa pun) hanya dengan menggunakan operator ternary seperti ini -> echo &hls ? 'H' : '' dalam kasus saya:let &stl.="%6*%01(%{&hls?'H':''}%)%0* "
SergioAraujo
20

Apa yang saya temukan berguna adalah untuk mengetahui copy / paste penyangga (mendaftar) saat ini aktif: %{v:register}. Kalau tidak, baris status lengkap saya hampir persis seperti garis standar.

:set statusline=%<%f\ %h%m%r\ %y%=%{v:register}\ %-14.(%l,%c%V%)\ %P
DarkDust
sumber
2
Ya ampun, itu v:registermemang terlihat sangat berguna!
nperson325681
Apa artinya mendaftar menjadi aktif? Pemahaman register saya (buruk) adalah bahwa mereka pada dasarnya clipboard untuk menyimpan teks.
Roymunson
15

Beberapa kali lebih sedikit lebih banyak, apakah Anda benar-benar perlu mengetahui persentase melalui file Anda saat coding? Bagaimana dengan jenis file?

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()}       

statusline

statusline

Saya juga lebih suka warna minimal agar tidak mengalihkan perhatian dari kode.

Diambil dari: https://github.com/krisleech/vimfiles

Catatan: rvm#statuslinespesifik untuk Ruby dan fugitive#statuslinekhusus untuk git.

Keris
sumber
1
+1 untuk status terkait git
Patrick
3

Saat ini saya menggunakan pengaturan bilah status ini:

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

File .vimrc saya yang lengkap: http://gabriev82.altervista.org/projects/vim-configuration/

gabriev82
sumber
1

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

Ini milikku, berikan sebagai saran

winterTTr
sumber