Vim의 Polyglot 프로그래밍(또는 Vim의 모든 언어에 좋은 개발 체험을 제공하는 방법)

11699 단어 vimwebdevneovim
본문은 최초로 Barbarian Meets Coding에 발표되었다.
Vim은 tons of languages out of the box에 대한 기본적인 지원을 제공했다. 예를 들어 문법의 하이라이트 디스플레이와 합리적인 축소 규칙 등이다.그러나 자바스크립트와 같은 유행어를 사용해도 자동 완성, 의미 내비게이션, 진단 등의 기능을 잘 얻지 못할 것이다.이 시대에, 너는 이미 이런 기능들을 기대하기 시작했을 것이다.더 현대적이거나 소수의 언어, 예를 들어 Svelte, JSX 또는 TSX와 관련될 때 문법이 돋보이거나 존재하지 않는다.
본고에서, 당신은 유행하는 프로그래밍 언어 (예를 들어 자바스크립트) 와 현대 언어 (예를 들어 TypeScript, Svelte, JSX) 를 더욱 잘 사용하여 개발자의 체험을 얻을 수 있도록 Vim을 설정하는 방법을 배울 것입니다.

Vim에서 모든 언어에 대해 좋은 개발 경험을 얻는 방법
Vim에 새 언어에 대한 지원을 추가하려는 경우에 이상적으로 다음 두 가지를 설정해야 합니다.

  • 새 언어의 정확한 문법 강조 표시 및 축소

  • IDE와 유사한 기능, 예를 들어 자동 완성, 의미 내비게이션, 진단 등...언어
  • 을 배울 때, 이것은 당신의 생활을 더욱 가볍게 할 것이다
    Vim에서 이 두 가지 목표를 실현하는 가장 간단한 방법은 풍부한 Vim 플러그인 생태계를 이용하는 것이다.

    1. 구문 강조 표시
    Vim에서 새 언어에 대한 구문 강조 표시를 추가하려면 다음 방법 중 하나를 따릅니다.

  • 선택한 언어에 문법 강조 표시 플러그인을 설치합니다. (예: vim-svelte은 Svelte, yats.vim은 TypeScript)

  • vim-polyglot 플러그인을 설치합니다.vim-polyglot은Vim의 언어 패키지로 lots and lots of programming languages에 문법적 하이라이트 디스플레이와 축소를 제공합니다.이 플러그인의 작성 방식은 only loads plugins lazily이기 때문에vim 시작 초기화 시간에 부담을 주지 않습니다.

  • 플러그인을 강조하거나 기존 플러그인의 일부분을 덮어쓰는 문법을 작성합니다.
  • 너는 위와 같은 어떤 것을 자유롭게 선택할 수 있지만, 나는 개인적으로 나의vim 설정에 무엇이 있는지 정확하게 알고, 그것에 대해 약간의 통제를 하는 것을 좋아한다.이것이 바로 내가 사용하고자 하는 모든 언어에 각각 플러그인을 설치하는 주요 원인이다.
    VimAwesome.com은 새로운 언어 플러그인을 찾는 좋은 방법이다.이것은 Vim 플러그인의 디렉터리입니다. 키워드 (예를 들어 TypeScript) 를 검색하고 이 키워드가 가장 유행하는 플러그인의 순위를 볼 수 있습니다.예를 들어 이들은 all the TypeScript plugins available으로 문법 플러그인부터 자동 보완, 포맷, linting 등까지 범위가 넓다.

    Don't know how to install plugins in Vim?

    Take a look at this article to get an introduction on how to configure vim and extend it with plugins.


    vim-polyglot을 시도했지만 단점이 너무 많아서 사용할 수 있는 즐거움을 누리지 못했습니다.
  • 플러그인 실험에서 다른 언어의 플러그인에서 추출한 문법의 하이라이트 디스플레이와 축소만 포함합니다.맵이나 명령과 같은 일반적인 유용한 다른 기능은 포함되지 않는다는 것이다.이것은 만약 당신이 이러한 추가 기능을 누리고 싶다면, 갑자기 당신의vim 설정에vim polyglot에 원시 플러그인을 추가해야 한다는 것을 의미한다. (이런 플러그인은 언어 패키지의 목적에 부합되지 않는다.)
  • 특정 언어의 다른 플러그인이vim polyglot에 첨부된 플러그인보다 더 유용하다는 것을 발견하면 이 플러그인을 정지하고 선택한 플러그인을 설치해야 합니다.
  • 마지막으로 사용자 정의 문법을 작성하는 것은 나의 첫 번째 선택이 아니지만 다음과 같은 상황에서 유용할 수 있다.
  • 주어진 언어에 사용할 수 있는 플러그인이 없을 때 (나는 아직 이 문제를 겪지 못했다)
  • 언어의 문법이 밝고 잘 보이지 않을 때
  • , 플러그인을 만들고 특수한 사용자 인터페이스를 제공하면 예뻐 보이기를 바랍니다. (예를 들어 Vim에서 음악 플레이어를 만들고 앨범을 돋보이게 하고 싶다고 상상해 보세요.)
  • 걸출하다따라서, 이 점에서, 우리는 문법이 밝고, 적절하게 새로운 언어로 축소되어 있으니, 너는 수정을 시작하고 싶다.이것은 언어 문법의 서로 다른 구성 요소에 대한 시각적 피드백을 얻을 수 있는 기본적인 개발 환경을 제공하고, Vim 자체를 우수한 편집기로 만드는 모든 놀라운 기능을 제공합니다.
    다음은요?IDE와 유사한 기능 추가!

    2. IDE와 유사한 기능
    나의 경력은 1990년대의 소프트웨어 개발에서 시작되었다.NET 생태계는 C#을 작성하고 Visual Studio와 Resharper 등 도구를 사용하기 때문에 저는 편집기 진단, 문장 완성, 스마트 재구성, 의미 코드 내비게이션, automagic 코드 복원, 프로젝트 범위 내의 이름 바꾸기 등 강력한 기능에 총애를 받아 왔습니다.몇 년 전에는 Vim에 모든 기능을 도입하는 것이 매우 어려웠지만, 오늘날에는 a growing number of LSP 1을 지원하는 언어 서버가 생겨서 Vim에서 모든 기능을 누릴 수 있습니다.
    많은 플러그인들이 이런 기능을 제공할 수 있지만, 내가 시도한 모든 플러그인에서, 나는 coc.nvim 또는 Conquer of Completion이 가장 좋은 지원을 제공하고 설치가 쉽고 기능 수량 사이에 좋은 균형을 이루었다는 것을 발견했다.코크를 얻기 위해주어진 언어에 nvim을 설정하려면 다음 두 단계를 따라야 합니다.

  • 좋아하는 플러그인 관리자를 사용하여 Vim에 coc.nvim 플러그인을 설치합니다.한 번만 하면 돼.

  • 특정 언어를 설치하고 확장합니다(예: :CocInstall coc-tsserver 명령을 실행하여 JavaScript와 TypeScript에 유사한 IDE를 지원할 수 있음).104만5천679만1천510명이다.새 언어의 확장을 설치할 때, 이 확장된 문서를 보고 추가 설정이 필요한지 확인하는 것이 좋습니다. 예를 들어, a lot of extensions available for many popular programming languages은 이미 설치되어 있지만, coc-tsserver은 그것을 어떻게 더 설정하는지에 대한 추가 정보를 제공합니다.
  • 코크가 설치되면확장자와 일치하는 파일을 열면vim가 활성화됩니다.예를 들어,coc tsserver가 설치되어 있다면, 언제든지 형식 스크립트 파일coc를 열 수 있습니다.nvim가 기사회생한다.the docs . 이렇게 하면 너는coc의 피드백을 즉시 얻을 수 있다.언제든지 파일을 열면 nvim가 정상적으로 작동합니다.또는 :CocInfo 명령을 사용하여coc의 현재 상태에 대한 자세한 정보를 얻을 수 있습니다.nvim:
    ## versions
    
    vim version: NVIM v0.4.2
    node version: v12.6.0
    coc.nvim version: 0.0.74-3712edf331
    term: iTerm.app
    platform: darwin
    
    ## Messages
    
    ## Output channel: tsserver
    [Info  - 12:55:23 PM] Started TSServer
    {
      "path": ".../.config/coc/extensions/node_modules/coc-tsserver/node_modules/typescript/lib",
      "_pathLabel": "",
      "_api": {
        "versionString": "3.7.3",
        "version": "3.7.3"
      }
    }
    
    
    모든 확장자는 하나의 기능원으로 충당되며, 서로 다른coc로 이 원본에 접근할 수 있습니다.nvim 명령.예를 들면 다음과 같습니다.
  • :CocInstall {extension} 설치 확장
  • :CocList에서는 다양한 소스의 목록에 액세스할 수 있습니다.예를 들면 다음과 같습니다.
  • :CocList extensions 설치된 확장
  • 나열
  • :CocList outline은 현재 파일의 개요(VScode 또는 Visual Studio 등 편집기에서 얻은 파일처럼)
  • :CocList snippets은 사용 가능한 코드 세그먼트 목록
  • 을 제공합니다.
  • :CocList diagnostics 오류 및 경고 목록 제공
  • :CocCommand {command}에서는 소스에서 제공한 명령을 실행할 수 있습니다.예를 들면 다음과 같습니다.
  • :CocCommand snippets.editSnippets은 현재 파일
  • 의 언어로 코드 세그먼트 파일로 전송
  • :CocCommand tsserver.executeAutoFix은 현재 존재하는 모든 자동 복구 가능한 오류(예를 들어 가져오기 및 오류 구현 인터페이스가 없음)를 수정했습니다.
  • :CocAction에서는 커서나 현재 선택한 코드에 대해 작업을 수행할 수 있습니다.이름 바꾸기, 부족한 가져오기, 재구성, 추출 함수나 상수, 추출 세션 등 매우 유용한 작업입니다.
  • :CocFix언어 서버
  • 에 권장되는 수정 사항을 적용할 수 있습니다.
    It is useful to add the coc.nvim status information to your status line in Vim, how to setup coc.nvim, how to install extensions에서 더 많은 정보를 찾을 수 있고 GitHub에서 how to configure it을 어떻게 찾을 수 있습니까?후자는 다음과 같은 유용한 바인딩과 함께 사용하는 것이 좋습니다.
    " Use `[g` and `]g` to navigate diagnostics
    nmap <silent> [g <Plug>(coc-diagnostic-prev)
    nmap <silent> ]g <Plug>(coc-diagnostic-next)
    
    " Remap keys for gotos
    nmap <silent> gd <Plug>(coc-definition)
    nmap <silent> gy <Plug>(coc-type-definition)
    nmap <silent> gi <Plug>(coc-implementation)
    nmap <silent> gr <Plug>(coc-references)
    
    초코야.nvim는 또한 전면적인 문서를 제공합니다. 당신은 provide a minimal configuration with sensible mappings :h coc-nvim을 사용하여vim에서 직접 찾을 수 있습니다.
    coc의 기타 대체품.매우 성숙한 nvim은 the always handy help command, YouCompleteMe, AleDeoplete을 포함한다.또한 IDE와 유사한 플러그 인의 전체 목록을 vim-lsp에서 찾을 수 있습니다.
    최종적으로 어떤 플러그인을 선택하든지 간에, 다음에 Vim이 새로운 언어를 사용하도록 설정할 때, 당신은 놀라운 개발 체험을 얻을 수 있기를 바랍니다.안녕히 계세요. 좋은 하루 되세요.
    만약 당신이 다른 방법을 사용하거나 다른 플러그인을 사용한다면 주저하지 말고 평론을 발표하세요!D
    LSP는 언어 서버 프로토콜을 나타냅니다.(위키백과에서) 텍스트 편집기나 IDE와 프로그래밍 언어의 특정 기능을 제공하는 서버 사이에 개방된 JSON RPC 기반 프로토콜이다.이 프로토콜의 목표는 프로그래밍 언어가 주어진 편집기나 IDE와 독립해서 실현하고 나누어 주는 것을 허용하는 것이다.  vimawesome.org

    좋은 웹페이지 즐겨찾기