Vsvim: gq no formatea el texto

Creado en 3 nov. 2010  ·  29Comentarios  ·  Fuente: VsVim/VsVim

Si selecciona un conjunto de filas y presiona 'gq', el texto no se formatea en líneas de tamaño adecuado. En vim, el ancho del comando se basa en la variable 'textwidth'.

feature request

Comentario más útil

Esta característica sería muy útil.

Todos 29 comentarios

sí, también me perdí esa característica: /

Yo también lo extraño ... pero amo a VsVim en general. :)

<voteup /> Esta es la característica número 1 que extraño de vim regular.

(una de las razones por las que menciono esto ahora es que vsvim se ha vuelto tan bueno que con frecuencia selecciono texto en bloque y escribo 'gq' esperando que haga algo, olvidando que vsvim aún no lo hace :))

Buscaré agregar eso. Hacer que gq funcione como un comando parece relativamente sencillo. Hacer que funcione como consecuencia de insertar texto será un poco más complicado.

Estaba mirando esto esta noche y me pregunto si tengo o no la historia completa con gq . El comportamiento me parece extraño y me preocupa que me pierda una parte clave de la función. Para mi experimento configuré :set textwidth=2 luego ejecuté gqq en el siguiente texto. Todos los - continuación representan espacios


el resultado fue

chases
cat

¿Es este el comportamiento que buscaba con gq ? La falta de sangría parece incorrecta, pero al buscar en la documentación de textwidth y gq no pude encontrar la manera de volver a agregarla.

Supongo que toda la historia debería incluir 'autoindent' y 'cindent' / 'smartindent' . Aquí hay algunos comportamientos diferentes (donde - denota espacios iniciales):

El uso de gq con set ai tw=2 más de --dog chases cat da como resultado:

--chases
--cat

O como dice la documentación:

    When autoindent is on, formatting (with the "gq" command or when you
    reach 'textwidth' in Insert mode) uses the indentation of the first
    line.

El uso de gq con set cin tw=2 ft=c más de --int main() { const char* test="a test"; if (test == NULL) { return 1; } return 0; } da como resultado:

--main()
{
----const
--------char*
--------test="a
--------test";
----if
--------(test
---------==
---------NULL)
--------{
------------return
----------------1;
--------}
----return
--------0;
}

Hombre, debí haber estado durmiendo anoche. Pensé que tenía ai cuando lo estaba probando, pero claramente no lo hice. Gracias por la info!

Hola @jaredpar. Realmente me gusta VsVim; me permite disfrutar usando Visual Studio.

Sólo curioso; ¿Algún progreso en este tema?

Sin progreso reciente. Perdí la pista de este problema al intentar sacar la versión 1.4.0 (debería lanzarse a finales de esta semana). Sin embargo, este alto en la lista para el próximo lanzamiento después de eso

+1. Dar formato a los comentarios de la documentación sin esta función es simplemente un PITA simple.

: +1: +1 para la funcionalidad gq.

: +1:

@jaredpar He tenido un gqq . Sin embargo, de manera similar a la pregunta que tenía sobre la implementación de funciones, creo que aquí hay lo suficiente como para que probablemente se necesite algún tipo de módulo de formateador. ¿Qué piensas? ¿Tiene alguna idea aquí en términos de diseño? Honestamente, me parece un problema complejo pero divertido. Estoy nervioso por aprender un poco a hacerlo con los objetos de texto de Visual Studio, pero por otro lado, me atrae el problema. (En una nota totalmente ajena, ¿fue este problema mi primera aparición en la página de GitHub de VsVim?)

Creo que algo tan grande necesitaría un módulo completo. He pensado en
implementando esto varias veces, pero rápidamente me pierdo en los detalles (parece
como si necesitara un lexer C avanzado para hacerlo correctamente, lo que generalmente me pone
apagado)

El jueves 30 de octubre de 2014 a las 5:44 p.m., Kazark [email protected] escribió:

@jaredpar https://github.com/jaredpar He tenido un anhelo renovado
para esta funcionalidad; En particular, me gustaría implementar gqq.
Sin embargo, similar a la pregunta que tenía sobre la implementación de funciones,
Siento que hay lo suficiente aquí como para que probablemente haya necesidad de algún tipo de
módulo formateador. ¿Qué piensas? ¿Tiene alguna idea aquí en términos de
¿diseño? Honestamente, me parece un problema complejo pero divertido. yo soy
nervioso por aprender a hacerlo con los objetos de texto de Visual Studio un
poco, pero por otro lado, me atrae el problema. (En un
nota no relacionada, fue este problema mi primera aparición en GitHub de VsVim
¿página?)

-
Responda a este correo electrónico directamente o véalo en GitHub
https://github.com/jaredpar/VsVim/issues/333#issuecomment -61196315.

Jared Parsons
http://blog.paranoidcoding.com/
http://twitter.com/jaredpar

Bien, eso es realmente interesante, porque _nunca_ uso esto para formatear código, solo comentarios o bloques de texto en un archivo de texto sin formato o Markdown. ¿Está destinado a formatear código? ¡Creo que ni siquiera me di cuenta de eso! ¿O estoy entendiendo mal ...? ¿Por qué necesitarías un lexer C? También te veo hablando de set tw=2 . ¿Es ese un caso de uso real? Honestamente, me cuesta imaginarme a alguien que establezca un valor entre set tw=0 y set tw=60 . Puede ser un caso marginal del que no tenga que preocuparse. ¿Qué piensas?

@Kazark lo estoy confundiendo con otra característica (no estoy seguro de cuál). Este en particular se vuelve difícil con el uso de formatoptions pero no requiere nada tan loco como un C lexer

Está bien, te pillo. Sí, fo comienza a hacerlo un poco loco, eso es seguro. Esa es la parte que me asusta. Me pregunto si podríamos hacer un pase inicial ignorando formatoptions solo para sacar algo y luego ir desde allí, ya sabes, tener una idea de para qué lo usa la gente, entonces, ¿qué partes de fo es importante trabajar primero. Lo sé para mí, la única forma en que (intento y no puedo) usarlo en VsVim es formatear los comentarios en archivos C # o F #. ¿Todavía crees que se merece su propio módulo?

Creo que está bien empezar simplificando la función y ampliando
mas tarde.

Mi instinto sería poner esto en un módulo / tipo separado. En el
al menos requerirá un tokenizador que necesita un tipo separado.

El viernes 31 de octubre de 2014 a las 10:41 a. M., Kazark [email protected] escribió:

Está bien, te pillo. Sí, fo empieza a ponerlo un poco loco, eso es seguro.
Esa es la parte que me asusta. Me pregunto si podríamos hacer una inicial
pasar ignorando formaciones solo para sacar algo y luego ir
a partir de ahí, ya sabes, ten una idea de para qué lo usa la gente, entonces, ¿qué partes
de fo es importante trabajar primero. Lo sé por mí, la única forma en que (trato de
y no) usarlo en VsVim es formatear comentarios en archivos C # o F #. Hacer
¿todavía crees que se merece su propio módulo?

-
Responda a este correo electrónico directamente o véalo en GitHub
https://github.com/jaredpar/VsVim/issues/333#issuecomment -61298899.

Jared Parsons
http://blog.paranoidcoding.com/
http://twitter.com/jaredpar

¡Ah, okey! Supuse que ya habría algunas cosas creadas para comandos normales como w y b y e y otras cosas que ya deben estar fragmentando el texto de una manera apropiada. Sin embargo, no he mirado el código. Probablemente debería hacer eso antes de seguir pontificando ...

@jaredpar Comencé a jugar con esto como un kata , pero estoy tratando de construirlo de una manera que pueda ser injertado en VsVim si llega a un punto útil (es decir, escribiendo mis pruebas en C # con XUnit, tratando de seguir su convenciones, etc.).

@jaredpar De acuerdo, tengo la carne de lo que considero los casos centrales implementados en el kata mencionado anteriormente. ¿Te importaría echar un vistazo?

Seguro, ¿tienes una rama que pueda mirar?

El viernes 12 de diciembre de 2014 a las 10:03 a. M., Kazark [email protected] escribió:

@jaredpar https://github.com/jaredpar Está bien, tengo la carne de lo que
considere los casos centrales implementados en el kata mencionado anteriormente. Cuidar a
¿echar un vistazo?

-
Responda a este correo electrónico directamente o véalo en GitHub
https://github.com/jaredpar/VsVim/issues/333#issuecomment -66809905.

Jared Parsons
http://blog.paranoidcoding.com/
http://twitter.com/jaredpar

Lo siento, no, todavía no; solo en este repositorio ... hasta ahora acabo de crear el código independiente de VsVim y me gustaría que me dieras algunas pistas sobre cómo empezar a integrarlo, si tienes alguna sugerencia.

Esta característica sería muy útil.

¿Es demasiado simplista asignar gq a :vsc Edit.FormatSelection y hacer que Visual Studio se preocupe por el formato? ¿Puede VsVim simplemente reenviar el valor de tw a la opción de formato de Visual Studio correspondiente para el documento actual?

:noremap gq :vsc Edit.FormatSelection<CR>

@mqudsi Ese tipo de formato (formato de código) ya es compatible con = . Este tipo de formato (ajuste y sangría de texto y comentarios) aún no está implementado.

Tengo una versión preliminar de este trabajo. Enviaré un PR cuando esté terminado.

@ricksladkey eres la: bomba:

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

ogirginc picture ogirginc  ·  6Comentarios

deevus picture deevus  ·  4Comentarios

DanielKeogh picture DanielKeogh  ·  3Comentarios

myopicmage picture myopicmage  ·  5Comentarios

prat0088 picture prat0088  ·  4Comentarios