¿Una línea de estado más útil en vim? [cerrado]

150

Me gustaría hacer que mi línea de estado en vim sea más informativa e interesante, y para eso necesito algunas ideas. ¿Cómo personalizaste tu línea de estado?

sica07
fuente
55
@paxdiablo: A veces vale la pena dedicar tiempo a configurar la herramienta según sus necesidades para que pueda utilizarla mejor y así ahorrar tiempo mientras trabaja.
DarkDust
10
Esto debería ser un wiki comunitario ya que no hay una respuesta correcta.
Randy Morris
3
No se trata tanto de opiniones como de aprovechar la experiencia y los conocimientos de las personas más instruidas. El interlocutor busca información que no puede adivinar, no pide a las personas que compitan sobre lo que es mejor. Las respuestas generarán una serie de opciones que no tenía antes. El hecho de que una pregunta tenga más de una respuesta no significa que no sea una pregunta basada en experiencia técnica. Esta pregunta se ajusta bien al formato SO y debe permanecer abierta.
NeilG

Respuestas:

134

Editar:-

Tenga en cuenta que vim-airline está ganando algo de fuerza como la nueva opción vimscript, ya que powerline se ha convertido en python.


Parece que la línea eléctrica es donde está en estos días: -

Línea de estado normal

Línea eléctrica

Líneas de estado personalizadas para otros complementos (por ejemplo, ctrlp )

Línea eléctrica

Gavin Gilmour
fuente
3
@Gavin, ¿cómo puedo cambiar a tus segmentos de línea eléctrica? ¿podría actualizar algunos scripts de modificación de segmento predeterminados? aplausos
Jerry Gao
@Gavin Yo también agradecería que pudieras compartir cómo incluiste cosas como tu sucursal en vim-powerline
Eric Hu
1
No se hizo nada especial, desde: github.com/Lokaltog/vim-powerline#troubleshooting solo asegúrese de tener "let g: Powerline_symbols = 'fancy'" en su archivo vimrc y tener las fuentes parcheadas instaladas.
Gavin Gilmour
Este es un buen complemento. Pero mi rendimiento de desplazamiento cuando abro un archivo por primera vez es muy muy malo debido a esto.
Ahmed Aeon Axan
2
@AhmedAeonAxan prueba la aerolínea, comienza rápido (vimscript puro). Y requiere mucho menos esfuerzo de configuración, especialmente con Vundle o Pathogen. Y una vez que instale la fuente powerline, se verá más o menos como una aerolínea. github.com/Lokaltog/powerline-fonts
nevado
60

Aquí está el mío:

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

Y aquí están los colores que usé:

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
fuente
1
c es en realidad el recuento de bytes, incluso si a veces se llama recuento de columnas incluso en vim help. Puede usar v para obtener lo que generalmente se entiende por número de columna.
Ludwig Weinzierl
Gracias @Ludwig, no lo he notado. Editaré la respuesta.
Tassos
8
Me encanta la claridad de comentar cada valor agregado en su propia línea. Si hubiera hecho eso hace 7 años, no lo habría descartado cuando hice mi última instalación limpia del sistema operativo.
Bruno Bronosky
Sweeet! Una cosa que me falta al usar esto es la línea que separa la sesión dividida
Julio Marins el
1
@trusktr Tenga en cuenta que guifgy guibgson para gvim. Si está ejecutando vimen una terminal, intente ctermfgy en su ctermbglugar. También necesitará diferentes colores, los números 1-16 o 1-256 dependiendo de cuántos colores haya habilitado en vim. Colores correspondientes para cada número.
joelostblom
46

Este es el que uso:

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.

¿Destacar? función:

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

Colores (adaptado de 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

Mi línea de estado

Animar
fuente
2
Agradable, esto evita la necesidad de tener los complementos de línea de estado de fantasía al menos para mi caso de uso, atractivo :)
Nishant
1
¿Cómo se consigue que los colores funcionen?
trusktr
Intenté poner esto después de colorschemeconfigurar cualquiera , pero solo veo una línea de estado de doble tono.
trusktr
@trusktr, No es fácil de explicar ... Necesita poner los primeros 2 bloques en su archivo vimrc y el bloque de colores en su archivo de esquema de colores actual. Puede encontrar su archivo de esquema de colores actual con este comando::colorscheme
Reman
1
Su búsqueda destacada sería más corta (sin ninguna función) simplemente usando un operador ternario como este -> echo &hls ? 'H' : '' en mi caso:let &stl.="%6*%01(%{&hls?'H':''}%)%0* "
SergioAraujo
20

Lo que he encontrado es útil saber qué copia / pega memoria intermedia (registro) es actualmente activo: %{v:register}. De lo contrario, mi línea de estado completa se ve casi exactamente como la línea estándar.

:set statusline=%<%f\ %h%m%r\ %y%=%{v:register}\ %-14.(%l,%c%V%)\ %P
Polvo oscuro
fuente
2
¡Mi, eso se v:registerve muy útil!
nperson325681
¿Qué significa que un registro esté activo? Mi (mala) comprensión de los registros es que básicamente eran portapapeles para almacenar texto.
Roymunson
15

Algunas veces menos es más, ¿realmente necesita saber el porcentaje a través del archivo que está al codificar? ¿Qué pasa con el tipo de archivo?

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

línea de estado

línea de estado

También prefiero un color mínimo para no distraerme del código.

Tomado de: https://github.com/krisleech/vimfiles

Nota: rvm#statuslinees específico de Ruby y fugitive#statuslinees específico de git.

Kris
fuente
1
+1 para la línea de estado relacionada con git
Patrick
3

Actualmente uso esta configuración de la barra de estado:

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

Mi archivo .vimrc completo: http://gabriev82.altervista.org/projects/vim-configuration/

gabriev82
fuente
1

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

Esto es mío, da como sugerencia

winterTTr
fuente