Vim, sa statusbar et les noms de fichier
Vim possède une statusline (barre de statut), dans laquelle on peut placer toute une série d’informations. Personnellement, je voulais voir — quelquepart — le nom du fichier édité. Et bien ce sera dans cette statusline.
Je voulais aussi pouvoir récupérer le nom du fichier édité afin de l’inclure dans des abréviations, c’est chose faite aussi.
D’abord merci à gabrielsl sur freenode / #linuxfr qui m’a donné le bon mot clé sur lequel baser ma recherche et le blog de Dimitri (lien mort) — que je ne connais ni d’Ève ni d’Adam — qui m’a montré l’un ou l’autre exemple.
La barre de status (statusline)
Il me suffit d’ajouter les lignes suivantes à mon fichier ~/.vimrc
afin d’activer cette ligne d’état tout le temps (par défaut elle n’est active que lorsque vim ouvre plusieurs fenêtres (split)) et d’y faire afficher ce que je veux.
set laststatus=2
set statusline=%a\ %F%1*%m%*%10{getfsize(expand('%'))}o
highlight StatusLine term=bold cterm=bold ctermbg=8
Extraits de la doc française:
- a Position dans la liste des arguments comme dans le titre par défaut
("{courant} of {max}")
. Vide si le nombre d’arguments de fichiers vaut 0 ou 1. - F Chemin absolu du fichier dans le tampon.
- m Drapeau « modifié », le texte vaut
[+]
ou[-]
si modifiable est désactivé. -getsize(expand(%)) permet d’avoir la taille du fichier. Lequel ? Celui interprété par%
. Cette fonction retourne-1
si le fichier n’existe pas.
Le nom de fichier
Le %
vu plus haut m’a mis la puce à l’oreille , j’essaie donc un r! echo %
et je vois apparaitre le nom du fichier édité. Yes, je vais pouvoir modifier l’une de mes abréviations. En effet, j’aime utiliser _class
lorsque je code en Java afin que vim écrive tout seul, public class {
. Si vous êtes attentif, vous remarquez l’absence du nom de la classe. Comme le nom de la classe correspond au nom du fichier, je peux écrire ceci :
abbr _class public class :r!echo %:r<cr><up>A<del><end> { <cr>
Mon fichier .vimrc
se trouve dans ce dépôt.