¿Cómo puedo obtener un búfer navegable (¿editable?) con los "mensajes" de vim?

¿Cómo puedo obtener un búfer navegable (¿editable?) con los "mensajes" de vim?

Entonces, si recibo un error de un complemento, me gustaría poder informar ese error en GitHub o similar.

Desafortunadamente, no se puede seleccionar con el mouse; y después de aparecer y pedirme que presione RETORNO, parece desaparecido para siempre.

  1. He descubierto que puedo hacer que aparezcan los errores.de nuevousando :messageso :3messageso similar; pero aparecen de la misma manera: no seleccionables, inútiles.

  2. Otro apiladorpreguntóuna pregunta similar, que arrojó el comando útil :let @+=v:errmsg, pero eso solo captura elúltimolínea de los mensajes; Muchos errores que veo consisten enmúltiplelíneas, todas las cuales me gustaría seleccionar.

Por favor, ayúdenme a A. convertir una :messagesventana en un búfer, para poder usar la selección visual normal para copiar lo que quiero informar fuera de Vim, o al menos B. construir algo que pueda incluir en mi archivo .vimrcy que copietodode las líneas del error más reciente en mi portapapeles.

¡Gracias!(=

Respuesta1

La respuesta de Heptite es una buena forma de hacerlo utilizando funciones integradas. Si estás de acuerdo con usar un complemento, mibufferizarEl complemento automatiza un poco el proceso. Te permite simplemente hacer:

:Bufferize messages

Para obtener un búfer de vista previa con el contenido de la salida de ese comando.

Como nota al margen, me sorprende que la :messagessalida no se pueda seleccionar. Supongo que tal vez estés usando Vim con una GUI. Con el terminal Vim, puede seleccionar y luego hacer clic con el botón central y pegar el contenido.

Respuesta2

Prueba esto:

:put = execute('messages')

Explicación:

  • :put {register}coloca el contenido del registro en la ubicación del cursor (como pen el modo normal)
  • execute('messages')es una función de vimscript que ejecuta un comando Ex y captura su salida
  • ={vimscript expression}es el registro de expresión, cuyo valor es el resultado de la expresión vimscript

Entonces, lo anterior captura la salida del :messagescomando en el registro de expresión y coloca el contenido del registro de expresión en la ubicación del cursor.

Ver :h quote=, :h :put,:h execute()

Respuesta3

Prueba esto:

:redir > messages.txt
:messages
:redir END
:e messages.txt

Puede suprimir la salida a la pantalla mientras sigue capturando la salida de mensajes cambiando :messagesa :silent messages.

información relacionada