Vim의 Polyglot 프로그래밍(또는 Vim의 모든 언어에 좋은 개발 체험을 제공하는 방법)
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 시작 초기화 시간에 부담을 주지 않습니다.
플러그인을 강조하거나 기존 플러그인의 일부분을 덮어쓰는 문법을 작성합니다.
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을 시도했지만 단점이 너무 많아서 사용할 수 있는 즐거움을 누리지 못했습니다.
다음은요?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은 그것을 어떻게 더 설정하는지에 대한 추가 정보를 제공합니다.: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, Ale과 Deoplete을 포함한다.또한 IDE와 유사한 플러그 인의 전체 목록을 vim-lsp에서 찾을 수 있습니다.
최종적으로 어떤 플러그인을 선택하든지 간에, 다음에 Vim이 새로운 언어를 사용하도록 설정할 때, 당신은 놀라운 개발 체험을 얻을 수 있기를 바랍니다.안녕히 계세요. 좋은 하루 되세요.
만약 당신이 다른 방법을 사용하거나 다른 플러그인을 사용한다면 주저하지 말고 평론을 발표하세요!D
LSP는 언어 서버 프로토콜을 나타냅니다.(위키백과에서) 텍스트 편집기나 IDE와 프로그래밍 언어의 특정 기능을 제공하는 서버 사이에 개방된 JSON RPC 기반 프로토콜이다.이 프로토콜의 목표는 프로그래밍 언어가 주어진 편집기나 IDE와 독립해서 실현하고 나누어 주는 것을 허용하는 것이다. vimawesome.org
Reference
이 문제에 관하여(Vim의 Polyglot 프로그래밍(또는 Vim의 모든 언어에 좋은 개발 체험을 제공하는 방법)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/vintharas/polyglot-programming-in-vim-or-how-to-get-a-great-developer-experience-for-any-language-in-vim-14f0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)