%20Com%20as%20%60mensagens%60%20do%20vim%3F.png)
Portanto, se eu receber um erro de um plugin, gostaria de poder relatar esse erro no GitHub ou similar.
Infelizmente, não pode ser selecionado com o mouse; e depois de aparecer e me pedir para apertar RETURN, parece que desapareceu para sempre.
Descobri que posso fazer com que os erros apareçamde novousando
:messages
ou:3messages
ou similar; mas aparecem da mesma forma: não selecionáveis, inúteis.Outro empilhadorperguntadouma pergunta semelhante, que rendeu o comando útil
:let @+=v:errmsg
- mas que apenas captura oo últimolinha das mensagens; muitos erros que vejo consistem emmúltiplolinhas, todas as quais eu gostaria de selecionar.
Por favor, ajude-me a A. transformar uma :messages
janela em um buffer, para que eu possa usar a seleção visual normal para copiar o que desejo relatar fora do Vim, ou pelo menos B. construir algo que eu possa colocar no meu .vimrc
que irá copiartodosdas linhas do erro mais recente na minha área de transferência.
Obrigado!(=
Responder1
A resposta da Heptite é uma boa maneira de fazer isso usando recursos integrados. Se você concorda em usar um plugin, meubufferizarplugin automatiza um pouco o processo. Permite que você faça:
:Bufferize messages
Para obter um buffer de visualização com o conteúdo da saída desse comando.
Como observação lateral, estou surpreso que a :messages
saída não seja selecionável. Acho que talvez você esteja usando o Vim com uma GUI? Com o terminal Vim, você pode selecionar e clicar com o botão do meio e colar o conteúdo.
Responder2
Experimente isto:
:put = execute('messages')
Explicação:
:put {register}
coloca o conteúdo do registro no local do cursor (comop
no modo normal)execute('messages')
é uma função vimscript que executa um comando Ex e captura sua saída={vimscript expression}
é o registro da expressão, cujo valor é o resultado da expressão vimscript
Portanto, o acima captura a saída do :messages
comando no registrador de expressão e coloca o conteúdo do registrador de expressão no local do cursor.
Ver :h quote=
, :h :put
,:h execute()
Responder3
Experimente isto:
:redir > messages.txt
:messages
:redir END
:e messages.txt
Você pode suprimir a saída para a exibição enquanto ainda captura a saída das mensagens alterando :messages
para :silent messages
.