¿Cómo mostrar la columna actual en la barra de estado en vim?


188

Me gustaría mostrar la columna actual en la barra de estado, como es común en muchos otros editores de texto. Por ejemplo, es bueno saber si está alrededor de la columna 80 o superior.

¿Cómo mostrar la columna actual en la barra de estado?


Si desea mostrar la columna actual del cursor, escriba: echo col ('.').
SibiCoder

Respuestas:


219

Pruebe si la opción de "regla" es lo que está buscando. En mi computadora en la parte inferior derecha muestra la línea y la columna donde tengo el cursor.

:set ruler

EDITAR A COMENTARIOS :

De la ayuda de vim (comando :help ruler):

Si el número de caracteres que se muestra es diferente del número de bytes en el texto (por ejemplo, para una TAB o un carácter de varios bytes), se muestran la columna de texto (número de bytes) y la columna de la pantalla, separadas por un guión.

Puedes intentar cambiarlo con la rulerformatopción, como:set rulerformat=%l,%v


Sí, algo así. Pero eso muestra un valor extraño, por ejemplo 23,62-68, donde 23 parecen ser la línea. ¿Cómo debo interpretar 62-68para la columna?
Jonas

77
62 cuenta las pestañas como un carácter, 68 cuenta las pestañas expandidas
RedGrittyBrick

1
Del comando ': regla de ayuda': "Si el número de caracteres que se muestra es diferente del número de bytes en el texto (por ejemplo, para una TAB o un carácter de varios bytes), tanto la columna de texto (número de bytes) como la pantalla se muestran columnas separadas por un guión ". Puede intentar cambiarlo con la opción 'rulerformat', como ': set rulerformat =% l,% v'
Birei

rulerno funciona con ventanas divididas en Vim.
Mihai

@Jonas No solo pestañas, como dijo RedGrittyBrick, sino también caracteres versus bytes. Esto es muy evidente en los archivos UTF-8 donde un glifo de un solo carácter tiene un punto de código de varios bytes. Por ejemplo, el latín eñe (n con tilde sobre él, pronunciado EN-sí) es un glifo de un solo carácter pero toma dos bytes para representar el punto de código (\ xC3B1), y un tercio (1/3) es un glifo de un solo carácter con un punto de código de tres bytes (\ xE28593).
Luv2code

27

Vea :help statuslinelas muchas opciones disponibles.

Tengo esto en mi ~/.vimrcentre un montón de otras directivas:

set statusline+=col:\ %c,

que salidas

col: 64

en mi statusline

No tengo set ruler.


1
Esto no funciona para mi. Probablemente necesito algunas configuraciones más.
Jonas

3
Jonas, es posible que deba usar el set laststatus=2en su .vimrcpara mostrar siempre la línea de estado. (0 -> nunca muestra la línea de estado, 1 -> solo si hay al menos dos ventanas, 2 -> siempre muestra la línea de estado).
pabuisson

Usé lo siguiente para proporcionar espacio antes de esto y de las cosas anteriores en la línea de estado: establecer línea de estado + = \ col: \% c,
David Baucum

18

Otra forma de hacer esto es hacer 'g Ctrl-G', que imprime la posición actual del cursor de cinco maneras: Columna, Línea, Palabra, Carácter y Byte. (de http://vimdoc.sourceforge.net/htmldoc/editing.html#g_CTRL-G )


Esta solución tiene algo ordenado, que diferencia Column y VisibleColumn. Los caracteres no imprimibles se muestran en 2 columnas, pero deben contarse como uno. Si los caracteres no imprimibles la salida es el siguiente: RealColumn-VisibleColumn, Line, Word, Character and Byte.
mxlian

17

O bien, deje la 'regla' sin definir, una ganancia de rendimiento, y presione CTRL-G cuando desee ver la columna actual.


3
Golpear Ctrl-Anything no suena como una ganancia de rendimiento. Estamos escribiendo personajes. Ningún humano tiene dedos y ojos que vuelan lo suficientemente rápido como para ver este tipo de diferencia de rendimiento.
macetw

10

Me depreciaría usando set ruler porque creo que no es compatible con las opciones de la línea de estado, por ejemplo, si configura la línea de estado para mostrar la ruta completa del archivo en combinación con set ruler

set statusline+=%F

set ruler

Entonces NO muestra el número de columna, sino solo la ruta completa del archivo en la barra de estado. Sin embargo, si pones lo siguiente en tu .vimrc

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

Mostrará todo correctamente, es decir, el

[Ruta de archivo / nombre de archivo] [número de lino]: [número de columna]


2

Para las otras personas que buscan esta respuesta y no están acostumbradas a trabajar con VIm, personalmente la respuesta más simple que he encontrado es agregar esta línea al final de su archivo .vimrc en su directorio de inicio:

set ruler

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.