Cómo saltar directamente a un número de columna en Vim

234

A veces, para fines de depuración, tengo que hacer el trabajo emocionante de vadear a través de un código JavaScript reducido. Las líneas tienen hasta 600 columnas de ancho. La biblioteca de informes de excepciones es lo suficientemente amable como para proporcionarme las coordenadas exactas de bloqueo en forma de número de línea y número de columna. Sin embargo, no puedo encontrar una manera de saltar directamente al número de columna, aunque puedo saltar a la línea tan fácilmente.

¿Cómo puedo hacerlo?

Jayesh
fuente
Parece que esta es una herramienta que necesita ser inventada. "Desminifica mi js, y mientras estás en eso salta al lugar identificado por este número de columna".
dnellis74
2
@ dnellis74 Esa herramienta existe. Se llama "mapas de origen";)
Burgi
//, @Burgi, ¿puede hacer un resumen y enlace de 3 palabras?
Nathan Basanese

Respuestas:

333

El |comando hace lo que desea, ya que 30|lo llevará a la columna 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

AB
fuente
41
Tenga en cuenta, para uso general, que esta es una columna de pantalla , no una columna real . Esto significa que los <Tab>personajes obtendrán resultados diferentes. Si estos personajes estarán allí, en su lugar se le quiere |30lho |29lo 029lo algo por el estilo.
Chris Morgan
25
También puede pasar un número antes de varios comandos de movimiento, por ejemplo 50h, moverá 50 caracteres a la izquierda.
AB
77
:set nowrapTambién puede ayudar a reducir la confusión entre las líneas de pantalla y las líneas de archivo.
David Pope
44
@DavidPope: tenga en cuenta que en este caso "columnas de pantalla" significa que todavía es relativo al comienzo de la línea. g0logra el "inicio de la línea de pantalla actual".
Chris Morgan
10
La documentación de vim es hilarante: "Ceci n'est pas une pipe" :-)
Avinash Meetoo
45

Puedes usar la cursorfunción. Por ejemplo, para saltar a la columna 25 de la línea 15, puede usar :call cursor(15,25).

Ravikant Mane
fuente
2
Esto da una respuesta a la pregunta y es conveniente tener la alternativa de comando Ex para scripts. Tenga en cuenta que si el número de línea es cero, el cursor permanecerá en la línea actual.
Giles Gardam
Esto es especialmente bueno para abrir Vim desde otras herramientas, ya que esta llamada se puede hacer en la línea de comandos:"+call cursor($LINE,$COLUMN)"
Laurence Gonsalves
5

Una respuesta alternativa que funciona para mí en Mac OS es usar el comando que mueve el cursor hacia la derecha (es decir l). Entonces, si su cursor está en la primera columna y desea colocar el cursor en la columna 50 de su línea actual, use el comando:

49l
entpnerd
fuente