ProgramingTip

Visual Studio Code에서 엿보기

bestdevel 2020. 11. 12. 19:24
반응형

Visual Studio Code에서 엿보기


Visual Studio Code에서 Ctrl 클릭 'peek'기능을 기능을 사용하는 방법이 있습니까? 이상적으로는 Ctrl 키를 사용하는 채로 새 탭에서 정의가 포함 된 파일을 보내고 싶습니다.

편집 : 적어도 혼란을 덜기 위해 문제제출 했습니다 . 내 용어가 약간 잘못되었습니다.

두 가지 조치가 있습니다.

  1. 오른쪽 클릭-> 정의보기
  2. 마우스 오른쪽 버튼 클릭-> 정의로 이동 (ctrl 클릭에 바인딩 됨)

결혼식 행동은 다음과 가변적입니다.

  1. PD, 단일 정의
    • 정의를 인라인 인터페이스를 제공합니다.
  2. PD, 다중 정의

    • 정의를 인라인 인터페이스를 제공합니다.
  3. GtD, 단일 정의

    • 정의가 포함 된 파일을 정렬 다.
  4. GtD, 다중 정의
    • 어떤 정의 중 하나를 선택 하고 해당 파일을 모든 정의를 표시하는 인라인 인터페이스를 .

마지막을 제외하고 모두 괜찮습니다. 두 가지 작업을 모두 수행하면 다음과 같이 UI가 매우 혼란 스러웠습니다.

혼란스러워!

다음 동작 중 하나를 수있는 방법이 있어야합니다.

  • 어느 하나를 선택하고 해당 파일을 다.

또는 :

  • 모든 정의를 오픈 인라인 인터페이스 ( 현재 파일에서 )

https://github.com/Microsoft/vscode/pull/68023 을 수정하기 풀 요청을 만들었지 만 위해 그때 VSCode 설치 파일을 패치하는 임시 수정이 있습니다. 모든 업데이트를 다시 적용해야합니다.

편집 : 수정 사항이 vscode에 병합되었습니다. 이후 버전이어야합니다.

이 수정으로 Ctrl + Click은 다음을 수행합니다.

  • 정의가 여러 개인 경우 peek 사용
  • peek를 사용할 때 편집기에서 가장 일치하는 항목으로 이동하지 않아 자리를 잃게됩니다.
  • 정의가 하나만있는 경우 가장 일치하는 항목으로 이동하고 엿보기를 열지 않습니다.

  1. 패치가 필요한 기능이 어떻게 생겼는지 알아 내십시오. 방법은DefinitionAction.prototype._onResult(editorService, editor, model)

  2. VSCode 설치 디렉터리로 이동합니다. %LocalAppData%\Programs\Microsoft VS CodeVSCode의 검색 기능을 사용하여 모든 파일에서 텍스트를 검색 할 수 있도록 VSCode에서 디렉토리를 마우스 오른쪽 버튼으로 클릭하고 엽니 다.

  3. _onResult모든 결과를 검색 하고 평가하여 서명과 본문이 1 단계에서 본 함수에서 기대하는 것과 일치하는지 확인합니다.

    • 1 단계부터는 기능 _openReference이 근처에 있음을 알고 있습니다. 이를 사용하여 검색 범위를 좁 힙니다.
    • workbench.main.js에서 찾았습니다 2454. 대괄호 일치를 사용하여 끝을 찾거나 바로 전에 끝나는 지 확인하십시오.t.prototype._openReference
    • 형식화되었을 때의 함수는 다음과 같습니다 (비동기 func는 statemachine으로 컴파일되므로 소스 유형 스크립트와 같지 않습니다).

      t.prototype._onResult = function (e, t, r) {
        return i(this, void 0, void 0, function () {
          var i, s, a;
          return n(this, function (n) {
            switch (n.label) {
              case 0:
                return i = r.getAriaMessage(), o.alert(i), this._configuration.openInPeek ? (this._openInPeek(e, t, r), [3, 3]) : [3, 1];
              case 1:
                return s = r.nearestReference(t.getModel().uri, t.getPosition()), [4, this._openReference(t, e, s, this._configuration.openToSide)];
              case 2:
                (a = n.sent()) && r.references.length > 1 ? this._openInPeek(e, a, r) : r.dispose(), n.label = 3;
              case 3:
              return [2]
            }
          })
        })
      }
      
  4. 함수를 다음 (동일한 버전을 사용하는 경우)으로 바꾸거나 형식을 지정하고이 예제와 유사한 것으로 확인 된 함수를 편집하십시오. 메모 o변수가 글로벌 \ 윈도우 객체 변경 될 수 있습니다.

    t.prototype._onResult = function (e, t, r) {
      return i(this, void 0, void 0, function () {
        return n(this, function (n) {
          switch (n.label) {
            case 0:
              return r.getAriaMessage(), o.alert(r.getAriaMessage()), this._configuration.openInPeek || r.references.length > 1 ? (this._openInPeek(e, t, r), [3, 3]) : [3, 1];
            case 1:
              return [4, this._openReference(t, e, r.nearestReference(t.getModel().uri, t.getPosition()), this._configuration.openToSide)];
            case 2:
              r.dispose(), n.label = 3;
            case 3:
            return [2]
          }
        })
      })
    }
    
  5. VSCode를 시작합니다. 당신은 Your Code installation appears to be corrupt. Please reinstall. 톱니 바퀴 아이콘을 누르고Don't Show Again.


이것은 최신 버전에서 수정 된 것 같습니다. 이제 마우스를 FOO안으로 가져 가면 foo.cpp일반 툴팁이 표시 #define FOO 2됩니다. Ctrl을 누르면 메시지가 확장되어 "2 개의 정의를 표시하려면 클릭"이라는 텍스트를 추가하고 Ctrl을 누른 상태에서 클릭하면 요청한대로 미리보기 창이 나타납니다.

여기에 이미지 설명 입력


CMD+ Click to go to implementation 의 동작을 변경하는 해결 방법을 찾으려고 했지만 아직 솔루션이없는 것 같습니다.

VSCode 문서는 기본적으로 수정 방법없이 정의로 이동하는 집합을 보여줍니다. https://code.visualstudio.com/docs/editor/editingevolved

내 컴퓨터 (Mac)에서 CMD+ 클릭 또는 F12메서드를 참조 정의에 대한 Peek보기로 연결 참조 CMD+ F12는보기없이 구현으로 연결됩니다.

참고 URL : https://stackoverflow.com/questions/41460845/disable-peek-in-visual-studio-code

반응형