2011-06-28 12 views
6

Me encontré con esta pregunta: https://softwareengineering.stackexchange.com/questions/87077/how-can-a-code-editor-effectively-hint-at-code-nesting-level-without-using-inde y pensé que Vim podría hacer algo similar también con un complemento.Pantalla de indentación alternativa en Vim

Creo que el nivel de sangría podría indicarse con el signo a (icono en la GUI, texto con resaltado en el término). La pieza de la que no estoy seguro es mostrar las líneas sin sangría. ¿Alguien sabe, es posible y/o cómo lo haría?

Esta pregunta no es si desea mostrar los niveles de indentación de esta manera es deseable; pero cómo lograrlo en Vim.

Respuesta

3

Puede usar la función conceal que es nueva en 7.3.

Aquí es una función que hace más o menos lo que el artículo está describiendo (para espacios; contabilidad de pestañas en lugar sería una adición bastante trivial):

function! IndentationHeatMap() 
    set conceallevel=1 
    for i in range(1,9) 
     let indentation = repeat(" ", &sts * i) 
     exe 'syntax match NonText "^' . indentation . '" conceal cchar=' . i 
    endfor 
endfunction 

Una solución más cerca de lo que está solicitando podría utilizar conceal para ocultar todos los espacios en blanco que lleva con

syntax match NonText "^\s\+" conceal

y luego usar signs para proporcionar los indicadores bas ed en cálculos personalizados.

Nota: NonText en estos comandos de sintaxis es un grupo resaltado arbitrario.

+0

Gracias, esto es perfecto. No sabía acerca de la característica de ocultar antes. –

0

Eche un vistazo a estos complementos: Indent Guides y IndentHL Ambos tienen capturas de pantalla.

+1

Estos son los opuestos de lo que quiero replicar. Estoy tratando de no mostrar la sangría en el archivo en sí; más bien tenga todo el texto alineado a lo largo de la columna más a la izquierda. Luego, en la columna de "signos" de vim use un indicador de ancho fijo del nivel de sangría. –

Cuestiones relacionadas