자바 IDE로서의 Vim

네 알겠습니다. Vim은 IDE가 아니라 텍스트 편집기입니다. 그리고 vim의 원래 사용 사례는 완전한 IDE가 아닙니다. 그러나 플러그인 가능성과 플러그인 랜드스케이프는 너무 보편적이어서 사람들이 시간을 투자하고 언어 서버 통합을 작성했습니다. nvim vim의 포크는 기본적으로 언어 서버 지원을 포함합니다.

그러나 IDE에 대한 기대치는 무엇입니까?
내 마음에 오는 것은 자동 완성, 가져오기 관리, 정의/구현/참조 형식 지정 및 디버깅으로 이동합니다. 구문 강조도 물론입니다.

자동 완성 및 언어 서버 통합에 대해 가장 잘 알려진 플러그인은 coc-vim 입니다. 하지만 사용하려는 언어 서버를 설치해야 하는 자체 플러그인 관리자와 생태계를 구현한다는 단점이 있습니다. 내가 설치한 coc 플러그인은 다음과 같습니다.

"coc-java": ">=1.4.12",
"coc-java-debug": ">=0.1.4",


설치하기 위해서:

:CocInstall coc-java
:CocInstall coc-java-debug


자동 완성, 가져오기 관리 및 코드 구조를 탐색하기 위한 "이동"항목을 다룹니다.

디버그 부분은 vimspectorcoc-java-debug 확장으로 다룹니다. 표준 매핑을 사용하지 않기 때문에 두 확장을 모두 사용하는 방법에 대해 자세히 설명하고 싶지는 않지만 추가 정보를 따르면 Vim은 IDE에 가깝습니다.

추가로: 테스트를 실행하거나 디버그 프로세스를 시작하기 위해 더 쉽게 만드는 몇 가지 키 바인딩이 있습니다.


" start the mvn build in a tmux pane with debug flag an the current buffer as filter parameter 
" [vimux](https://github.com/benmills/vimux) is a plugin for tmux user to interact better between tmux and vim
" I just use it to kick of my maven build in debugmode with the actual Testclass
noremap <leader>ds :VimuxRunCommand "mvn -Dmaven.surefire.debug  -Dtest=".expand("%:t:r")." test --offline"<CR>

" runs mvn test with the current buffer name a filter parameter.  
noremap <leader>rs :call RunMvnThisTest(expand("%:t:r"))<CR>

" runs all tests, but catch the output and open a new buffer with the result of the mvn build
noremap <leader>rS :call RunMvnTest()<CR>



vim 함수here의 구현을 볼 수 있습니다.
디버그 모드를 시작할 때 사용하고 있습니다.

" after starting in debug mode, the build will stuck and waiting for the attaching debugger. 
map <leader>at :CocCommand java.debug.vimspector.start<CR>


디버거에 연결하고 vimpector 탭으로 전환합니다.

그러나 다음 내용이 포함된 프로젝트 루트 a.vimspector.json가 필요하다는 것을 기억해야 합니다.

{
  "adapters": {
    "java-debug-server": {
      "name": "vscode-java",
      "port": "${AdapterPort}"
    }
  },
  "configurations": {
    "Java Attach": {
      "adapter": "java-debug-server",
      "configuration": {
        "request": "attach",
        "host": "127.0.0.1",
        "port": "5005"
      },
      "breakpoints": {
        "exception": {
          "caught": "N",
          "uncaught": "N"
        }
      }
    }
  }
}

좋은 웹페이지 즐겨찾기