Comment accéder directement à un numéro de colonne dans Vim


234

Parfois, à des fins de débogage, je dois faire le travail passionnant de patauger dans du code javascript minifié. Les lignes font jusqu'à 600 colonnes de large. La bibliothèque de rapports d'exceptions est assez aimable pour me fournir les coordonnées exactes du crash sous forme de numéro de ligne et de colonne. Cependant, je ne peux pas trouver un moyen de passer directement au numéro de colonne, même si je peux sauter à la ligne si facilement.

Comment puis-je le faire?


Cela ressemble à ceci un outil qui doit être inventé. "Déminifiez mes js, et pendant que vous y êtes, sautez à l'endroit identifié par ce numéro de colonne."
dnellis74

2
@ dnellis74 Cet outil existe. Ça s'appelle "sourcemaps";)
Burgi

//, @Burgi, peut-on résumer et lier un mot en 3 mots?
Nathan Basanese

Réponses:


333

La |commande fait ce que vous voulez, car dans vous 30|amènera à la colonne 30.

                                                        bar
|                       To screen column [count] in the current line.
                        exclusive motion.  Ceci n'est pas une pipe.

http://vimdoc.sourceforge.net/htmldoc/motion.html#bar


41
Sachez, pour une utilisation générale, qu'il s'agit d' une colonne d' écran et non d' une colonne réelle . Cela signifie que les <Tab>personnages obtiendront des résultats différents. Si ces personnages seront là, vous voudrez plutôt |30lhou |29lou 029lou quelque chose comme ça.
Chris Morgan

25
Vous pouvez également passer un nombre avant diverses commandes de mouvement, par exemple 50hdéplaceront 50 caractères à gauche.
AB

7
:set nowrappeut également aider à réduire la confusion entre les lignes d'écran et les lignes de fichier.
David Pope

4
@DavidPope: notez que dans ce cas "colonnes écran" signifie qu'il est toujours relatif au début de la ligne. g0atteint "début de la ligne d'écran actuelle".
Chris Morgan

10
La documentation de Vim est hilarante: "Ceci n'est pas une pipe" :-)
Avinash Meetoo

45

Vous pouvez utiliser la cursorfonction. Par exemple, pour passer à la colonne 25 de la ligne 15, vous pouvez utiliser :call cursor(15,25).


2
Cela donne une réponse à la question et il est pratique d'avoir l'alternative de commande Ex pour les scripts. Notez que si le numéro de ligne est zéro, le curseur restera dans la ligne actuelle.
Giles Gardam

C'est particulièrement agréable pour ouvrir Vim à partir d'autres outils, car cet appel peut être fait en ligne de commande:"+call cursor($LINE,$COLUMN)"
Laurence Gonsalves

5

Une autre réponse qui fonctionne pour moi sur Mac OS est d'utiliser la commande qui déplace le curseur vers la droite (c'est-à-dire l). Donc, si votre curseur se trouve sur la première colonne et que vous souhaitez placer le curseur sur la colonne 50 de votre ligne actuelle, utilisez la commande:

49l
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.