![¿Cómo puedo obtener un búfer navegable (¿editable?) con los "mensajes" de vim?](https://rvso.com/image/1543219/%C2%BFC%C3%B3mo%20puedo%20obtener%20un%20b%C3%BAfer%20navegable%20(%C2%BFeditable%3F)%20con%20los%20%22mensajes%22%20de%20vim%3F.png)
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.
He descubierto que puedo hacer que aparezcan los errores.de nuevousando
:messages
o:3messages
o similar; pero aparecen de la misma manera: no seleccionables, inútiles.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 :messages
ventana 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 .vimrc
y 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 :messages
salida 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 (comop
en 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 :messages
comando 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 :messages
a :silent messages
.