Une ligne de statut plus utile dans vim? [fermé]


150

J'aimerais rendre mon statut dans vim plus informatif et intéressant, et pour cela j'ai besoin de quelques idées. Comment avez-vous personnalisé votre statut?


5
@paxdiablo: Parfois, cela vaut la peine de passer le temps à configurer l'outil selon vos besoins afin que vous puissiez en faire un meilleur usage et ainsi gagner du temps tout en travaillant.
DarkDust

10
Cela devrait être un wiki communautaire car il n'y a pas de réponse correcte.
Randy Morris

3
Il ne s'agit pas tant d'opinions que de tirer parti de l'expérience et de l'expertise de personnes plus savantes. L'interlocuteur recherche des informations qu'il ne peut pas deviner, ne demande pas aux individus de se concurrencer sur ce qui est le mieux. Les réponses généreront un certain nombre d'options qu'il n'avait pas auparavant. Ce n'est pas parce qu'une question a plus d'une réponse que ce n'est pas une question basée sur l'expertise technique. Cette question correspond bien au format SO et devrait rester ouverte.
NeilG

Réponses:


134

Éditer:-

Notez que vim- Airlines gagne du terrain en tant que nouvelle option vimscript, car Powerline est devenue python.


Il semble que Powerline soit là où il est ces jours-ci:

Ligne d'état normal

ligne électrique

Lignes de statut personnalisées pour d'autres plugins (par exemple ctrlp )

ligne électrique


3
@Gavin comment puis-je modifier vos segments de lignes électriques? pourriez-vous mettre à jour certains scripts de modification de segment par défaut? cheers
Jerry Gao

@Gavin Moi aussi, j'apprécierais si vous pouviez partager comment vous avez inclus des choses comme votre succursale dans vim-powerline
Eric Hu

1
Rien de spécial à faire, à partir de: github.com/Lokaltog/vim-powerline#troubleshooting, assurez-vous simplement d'avoir "let g: Powerline_symbols = 'fancy'" dans votre fichier vimrc et d'avoir installé les polices corrigées.
Gavin Gilmour

c'est un joli plugin. Mais mes performances de défilement lorsque j'ouvre un fichier pour la première fois sont très très mauvaises à cause de cela.
Ahmed Aeon Axan

2
@AhmedAeonAxan essaie la compagnie aérienne, ça démarre vite (pur vimscript). Et nécessite beaucoup moins d'efforts à installer, en particulier avec Vundle ou Pathogen. Et une fois que vous avez installé la police Powerline, elle ressemble plus ou moins à une compagnie aérienne. github.com/Lokaltog/powerline-fonts
enneigé

60

Voici la mienne:

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

ligne d'état vim

Et voici les couleurs que j'ai utilisées:

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

1
c est en fait le nombre d'octets, même s'il est parfois appelé nombre de colonnes même dans l'aide de vim. Vous pouvez utiliser v pour obtenir ce que l'on entend généralement par numéro de colonne.
Ludwig Weinzierl

Merci @Ludwig, je ne l'ai pas remarqué. Je vais modifier la réponse.
Tassos

8
J'adore la clarté du commentaire de chaque valeur ajoutée sur sa propre ligne. Si j'avais fait cela il y a 7 ans, je ne l'aurais pas jeté lors de ma dernière installation de système d'exploitation propre.
Bruno Bronosky

Sweeet! Une chose qui me manque en utilisant ceci est la ligne qui sépare la session fractionnée
Julio Marins

1
@trusktr Notez que guifget guibgsont pour gvim. Si vous exécutez vimdans un terminal, essayez ctermfget ctermbgplace. Vous aurez également besoin de différentes couleurs, les numéros 1-16 ou 1-256 selon le nombre de couleurs que vous avez activées dans vim. Couleurs correspondantes pour chaque numéro.
joelostblom

46

C'est celui que j'utilise:

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.

Mettre en évidence? fonction:

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

Couleurs (adapté 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

Ma StatusLine


2
Bien, cela évite le besoin d'avoir les plugins de ligne d'état fantaisie au moins pour mon cas d'utilisation, eye candy :)
Nishant

1
Comment faire fonctionner les couleurs?
trusktr

J'ai essayé de mettre cela après que tout ait colorschemeété défini, mais je vois juste une ligne d'état à deux tons.
trusktr

@trusktr, pas facile à expliquer .... Vous devez mettre les 2 premiers blocs dans votre fichier vimrc et le bloc de couleurs dans votre fichier de couleurs actuel. Vous pouvez trouver votre fichier de couleurs actuel avec cette commande::colorscheme
Reman

1
Votre recherche de surbrillance serait plus courte (sans aucune fonction) simplement en utilisant un opérateur ternaire comme celui-ci -> echo &hls ? 'H' : '' dans mon cas:let &stl.="%6*%01(%{&hls?'H':''}%)%0* "
SergioAraujo

20

Ce que j'ai trouvé utile est de savoir qui copier / coller tampon (registre) est actuellement actif: %{v:register}. Sinon, ma ligne d'état complète ressemble presque exactement à la ligne standard.

:set statusline=%<%f\ %h%m%r\ %y%=%{v:register}\ %-14.(%l,%c%V%)\ %P

2
Mon, cela v:registersemble vraiment très utile!
nperson325681

Qu'est-ce que cela signifie pour un registre d'être actif? Ma (mauvaise) compréhension des registres est qu'ils étaient essentiellement des presse-papiers pour stocker du texte.
Roymunson

15

Parfois moins c'est plus, avez-vous vraiment besoin de connaître le pourcentage dans le fichier que vous êtes lors du codage? Qu'en est-il du type de fichier?

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

Je préfère également une couleur minimale pour ne pas me distraire du code.

Tiré de: https://github.com/krisleech/vimfiles

Remarque: rvm#statuslineest spécifique à Ruby et fugitive#statuslineest spécifique à git.


1
+1 pour la ligne de statut liée à git
Patrick


1

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

Ceci est à moi, donnez comme suggestion

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.