vim의 `messages`를 사용하여 탐색 가능한(편집 가능한?) 버퍼를 어떻게 얻을 수 있나요?

vim의 `messages`를 사용하여 탐색 가능한(편집 가능한?) 버퍼를 어떻게 얻을 수 있나요?

따라서 플러그인에서 오류가 발생하면 GitHub 또는 이와 유사한 오류를 보고하고 싶습니다.

불행히도 마우스로 선택할 수는 없습니다. 그리고 나타나서 RETURN을 누르라고 요청한 후에는 영원히 사라진 것 같습니다.

  1. 오류가 나타날 수 있음을 발견했습니다.다시사용하거나 :messages유사한 :3messages것; 그러나 그들은 같은 방식으로 나타납니다: 선택할 수 없고 쓸모가 없습니다.

  2. 또 다른 스태커물었다비슷한 질문으로 유용한 명령을 얻었 :let @+=v:errmsg지만 이는 단지아주 마지막메시지 줄; 내가 본 많은 오류는 다음과 같습니다.다수의모든 라인을 선택하고 싶습니다.

:messagesA. 창을 버퍼로 전환하여 일반적인 시각적 선택을 사용하여 Vim 외부에서 보고하고 싶은 내용을 복사할 수 있도록 도와주세요. 아니면 적어도 B. .vimrc복사할 내용을 내 내부에 넣을 수 있도록 도와주세요.모두가장 최근 오류 내용을 내 클립보드에 복사합니다.

감사해요!(=

답변1

Heptite의 답변은 내장 기능을 사용하여 이를 수행하는 좋은 방법입니다. 플러그인을 사용해도 괜찮다면,버퍼화하다플러그인은 프로세스를 약간 자동화합니다. 다음을 수행할 수 있습니다.

:Bufferize messages

해당 명령의 출력 내용이 포함된 미리보기 버퍼를 얻으려면.

참고로 :messages출력을 선택할 수 없다는 것에 놀랐습니다. 어쩌면 당신은 GUI와 함께 Vim을 사용하고 있는 것 같은데요? 터미널 Vim을 사용하면 콘텐츠를 선택한 다음 마우스 가운데 버튼을 클릭하여 붙여넣을 수 있습니다.

답변2

이 시도:

:put = execute('messages')

설명:

  • :put {register}레지스터의 내용을 커서 위치에 넣습니다( p일반 모드와 유사).
  • execute('messages')Ex 명령을 실행하고 그 출력을 캡처하는 vimscript 함수입니다.
  • ={vimscript expression}표현식 레지스터이며, 그 값은 vimscript 표현식의 결과입니다.

따라서 위의 내용은 표현식 레지스터에서 명령의 출력을 캡처 :messages하고 표현식 레지스터의 내용을 커서 위치에 배치합니다.

보다 :h quote=, :h :put,:h execute()

답변3

이 시도:

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

:messages로 변경하면 메시지 출력을 캡처하는 동안 디스플레이 출력을 억제할 수 있습니다 :silent messages.

관련 정보