Comment afficher la colonne actuelle dans la barre d'état dans vim?

188

J'aimerais afficher la colonne actuelle dans la barre d'état, comme c'est le cas dans de nombreux autres éditeurs de texte. Par exemple, il est bon de savoir si vous êtes autour de la colonne 80 ou plus.

Comment afficher la colonne actuelle dans la barre d'état?

Jonas
la source
Si vous souhaitez afficher la colonne de curseur actuelle, tapez: echo col ('.').
SibiCoder

Réponses:

219

Essayez si l'option "règle" est ce que vous recherchez. Sur mon ordinateur en bas à droite montre la ligne et la colonne où j'ai le curseur.

:set ruler

ÉDITER AUX COMMENTAIRES :

De l'aide de vim (commande :help ruler):

Si le nombre de caractères affichés est différent du nombre d'octets dans le texte (par exemple, pour une tabulation ou un caractère multi-octets), la colonne de texte (nombre d'octets) et la colonne d'écran sont affichées, séparées par un tiret.

Vous pouvez essayer de le changer avec rulerformatoption, comme:set rulerformat=%l,%v

Birei
la source
Oui, en quelque sorte. Mais cela montre une valeur étrange, par exemple 23,62-68, 23 semblent être la ligne. Comment dois-je interpréter 62-68pour la colonne?
Jonas
7
62 compte les onglets comme un caractère, 68 compte les onglets développés
RedGrittyBrick
1
A partir de la commande ': help ruler': "Si le nombre de caractères affichés est différent du nombre d'octets dans le texte (par exemple, pour une tabulation ou un caractère sur plusieurs octets), la colonne de texte (nombre d'octets) et l'écran les colonnes sont affichées, séparées par un tiret. " Vous pouvez essayer de le changer avec l'option 'rulerformat', comme ': set rulerformat =% l,% v'
Birei
rulerne fonctionne pas avec des fenêtres divisées dans Vim.
Mihai
@Jonas Comme le dit RedGrittyBrick, ce ne sont pas seulement des tabulations, mais aussi des caractères contre des octets. Ceci est très évident dans les fichiers UTF-8 où un glyphe à un caractère a un point de code multi-octets. Par exemple, le latin eñe (n avec tilde dessus, prononcé EN-yea) est un glyphe à caractère unique mais prend deux octets pour représenter le point de code (\ xC3B1) et un tiers (1/3) est un glyphe à caractère unique avec un point de code à trois octets (\ xE28593).
Luv2code
27

Voir :help statuslinepour les nombreuses options disponibles.

J'ai ceci ~/.vimrcentre deux directives:

set statusline+=col:\ %c,

qui sort

col: 64

dans mon statut.

Je n'ai pas set ruler.

romainl
la source
1
Cela ne marche pas pour moi. J'ai probablement besoin de quelques réglages supplémentaires.
Jonas
3
Jonas, Vous devrez peut-être utiliser le set laststatus=2dans .vimrcpour toujours afficher la ligne d'état. (0 -> ne jamais afficher la ligne d'état, 1 -> uniquement s'il y a au moins deux fenêtres, 2 -> toujours afficher la ligne d'état).
Pabuisson
J'ai utilisé ce qui suit pour fournir un espace avant ceci et les éléments précédents sur la ligne de statut: set statusline + = \ col: \% c,
David Baucum
18

Une autre façon de faire est de faire «g Ctrl-G», qui affiche la position actuelle du curseur de cinq manières différentes: Column, Line, Word, Character et Byte. (de http://vimdoc.sourceforge.net/htmldoc/editing.html#g_CTRL-G )

Peter
la source
Cette solution a quelque chose de bien, qui différencie Column et VisibleColumn. Les caractères non imprimables sont affichés sur 2 colonnes, mais doivent être comptés pour une. Si les caractères non imprimables la sortie ressemble à ceci: RealColumn-VisibleColumn, Line, Word, Character and Byte.
MXLIAN
17

Vous pouvez également laisser «règle» non définie, obtenir un gain de performance et appuyer sur CTRL-G lorsque vous voulez voir la colonne en cours.

ma11hew28
la source
3
Frapper Ctrl-Anything ne sonne pas comme un gain de performance. Nous tapons des caractères. Aucun humain n'a les doigts et les yeux qui volent assez vite pour voir ce genre de différence de performance.
macetw
10

Je déprécierais avec set ruler car je pense que cela n’est pas compatible avec les options statusline, par exemple si vous définissez statusline pour afficher le chemin complet du fichier en combinaison avec set ruler

set statusline+=%F

set ruler

Ensuite, il n’affiche PAS le numéro de colonne, mais seulement le chemin de fichier complet dans la barre d’état. Cependant, si vous mettez les éléments suivants dans votre fichier .vimrc

set statusline+=%F\ %l\:%c

Il affichera tout correctement, à savoir le

[Filepath / filename] [linumber]: [numéro de colonne]

Giovanni Macciocu
la source
2

Pour les autres personnes qui recherchent cette réponse et ne sont pas habituées à travailler avec VIm, la réponse la plus simple que j'ai trouvée consiste à ajouter cette ligne à la fin de votre fichier .vimrc dans votre répertoire personnel:

set ruler

Geai
la source