.gvimrc와 명령줄의 팝업 대화 상자에 차이점이 있는 이유는 무엇입니까?

.gvimrc와 명령줄의 팝업 대화 상자에 차이점이 있는 이유는 무엇입니까?

confirm()사용자가 버튼을 클릭하기를 기다리는 대화 상자를 표시하기 위해 gVim의 기능을 사용하고 있습니다 . 그러나 다음에서 호출할 때 대화 상자의 모양에 차이가 있는 것 같습니다 .gvimrc.

명령을 사용하면 :let MyTestV = confirm("IN MY_GVIMRC")다음 대화 상자가 생성됩니다.

여기에 이미지 설명을 입력하세요

이 줄( 을 포함하지 않음 )이 (및 해당) 파일 :에 추가되면 새 gVim이 열릴 때 다음이 나타납니다..gvimrc.vimrc

여기에 이미지 설명을 입력하세요

실제 gVim 창이 화면에 나타나기 전에 대화 상자가 나타납니다.

1) 두 대화 상자의 모양에 차이가 있는 이유는 무엇입니까?

2) 대화 상자가 예상대로 나타나도록 명령을 어디에 넣을 수 있습니까?

답변1

나는 이것이 일반적인 "경쟁 조건" 버그 클래스의 변형이라고 생각합니다. GUI가 아닌 Vim 버전을 시작하고 confirm()명령을 실행하면 추가 텍스트가 어디서 나오는지 확인할 수 있습니다. 기본적으로 Vim은 GUI가 아닌 confirm()텍스트를 GUI 팝업에 넣습니다. 왜냐하면 실행 중인 시점에서는 .vimrc아직 GUI를 실제로 사용할 수 없기 때문입니다.

이에 대한 보고서를 이메일(스팸봇 속도를 늦추기 위해 약간 난독화된 주소) bugs로 이메일을 보내실 것을 제안합니다 . vim.org이 슈퍼유저 질문에 연결할 수도 있습니다.

편집하다:이 문제는 제가 생각했던 것보다 훨씬 더 심각합니다. 나는 그것을 재현할 수 있는지 확인하기로 결정하고 다음 명령을 내 위치에 넣었습니다 .vimrc.

echo confirm('test')

그리고 나는 당신과 같은 결과를 얻었지만~와 함께1verify() 함수의 반환 값 으로 구성된 추가 줄이 추가되었습니다 . 여기에는 확실히 뭔가 문제가 있습니다.

두 번째 편집:대화를 지연하는 것이 confirm()문제가 되지 않으면 대신 다음을 수행할 수 있습니다.

autocmd VimEnter * let MyTestV = confirm("IN MY_GVIMRC")

답변2

정의되지 않은 동작이 발생하는 것 같습니다. 사용자와 상호 작용하는 기능은 ~/.vimrcGUI가 아직 제대로 초기화되지 않았기 때문에 에서 실행되어서는 안 됩니다. :help input()다음과 같은 경고가 포함되어 있습니다.

참고: 이 기능은 GUI 모드(예: Win32 GUI)에서만 실행되는 버전의 경우 시작 파일에서 사용하면 안 됩니다.

시작 직후 사용자에게 쿼리해야 하는 경우 :autocmd VimEnter이를 트리거하는 데 사용하세요.

관련 정보