이제 Neovim 패키지(:h 패키지)를 이해하고 플러그인/패키지 관리자(packer.nvim)를 사용하여 올바르게 관리하는 방법에 대해 알아보겠습니다.
우리는 할 것이다.
- Neovim에서 패키지가 작동하는 방식을 이해합니다.
- 플러그인을 모니터링하고 프로파일링하는 프로파일링을 구성합니다.
- 더 나은 시작 성능을 위해 지연 로드 플러그인에 대한 다양한 옵션을 이해합니다.
- 다양한 옵션을 사용하는 느린 로드 플러그인.
- 다른 유용한 플러그인을 구성하고 느리게 로드합니다.
이 기사는 초보자용 네오빔 시리즈의 일부입니다.
이 리포지토리에서 Neovim 구성 파일을 찾을 수 있습니다.
패키지
XDG 기본 디렉토리부터 시작하겠습니다.
Neovim은 $XDG_CONFIG_HOME 및 $XDG_DATA_를 사용합니다.HOME 환경 변수(있는 경우)
- Linux/Unix의 경우 $XDG_CONFIG_HOME 구성 디렉토리는 기본적으로 ~/.CONFIG/nvim으로 설정됩니다. Windows에서는 ~/AppData/Local ~/AppData/Local/nvim으로 기본 설정됩니다.
- 데이터 디렉토리 $XDG_DATA_의 경우HOME, Linux/Unix에서는 기본값이 ~/local/share 및 ~/local/share/nvim입니다. Windows에서는 ~/AppData/Local 및 ~/AppData/Local/nvim-data로 기본 설정됩니다.
$XDG_DATA_ 아래에 Neovim 플러그인 또는 패키지가 설치되어 있습니다.홈 디렉토리. 구성의 경우 $XDG_DATA_의 위치를 명시적으로 지정합니다.설치 스크립트에 홈이 있습니다.
NVIM_BEGINNER=~/.config/nvim-beginner
export NVIM_BEGINNER
rm -rf $NVIM_BEGINNER
mkdir -p $NVIM_BEGINNER/share
mkdir -p $NVIM_BEGINNER/nvim
stow --restow --target=$NVIM_BEGINNER/nvim .
alias nvb='XDG_DATA_HOME=$NVIM_BEGINNER/share XDG_CONFIG_HOME=$NVIM_BEGINNER nvim'
export nvb
- lua/plugins.lua 파일에서 packer.nvim의 설치 경로를 $XDG_DATA_HOME/site/packer/start로 지정합니다.
local install_path = fn.stdpath "data" .. "/site/pack/packer/start/packer.nvim"
- 시작 폴더 아래의 플러그인은 자동으로 로드되지만(:h 패키지), 옵션 폴더 아래의 플러그인은 선택적으로 로드됩니다(:h 팩 추가).
네오빔 패키지는 기본 제공 기능으로 패커.nvim은 이 기능을 기반으로 구축된 루아 플러그인으로 패키지 관리가 용이합니다.
문서에 따르면
Vim 패키지는 하나 이상의 플러그인이 포함된 디렉토리입니다. 그
일반 플러그인에 비해 장점:
- 패키지는 아카이브로 다운로드되어 자체 디렉터리에서 압축을 풀 수 있습니다. 따라서 파일은 다른 플러그인의 파일과 혼합되지 않습니다. 따라서 업데이트 및 제거가 쉽습니다.
- 패키지는 깃, 수은 저장소 등이 될 수 있습니다. 정말 그렇네요.
업데이트하기 쉽습니다. - 패키지에는 서로 종속된 여러 플러그인이 포함될 수 있습니다.
- 패키지는 시작 시 자동으로 로드되는 플러그인과 ":packadd"와 함께 필요할 때만 로드되는 플러그인을 포함할 수 있다.
packer.nvim이 패키지 관리에 어떤 도움을 줄 수 있는지 계속 알아보겠습니다.
프로파일링
플러그인을 모니터링하고 프로파일링하는 데 도움이 되는 프로파일링을 설정해 보겠습니다.
lua/plugins.lua에서 다음 packer.nvim 구성을 추가합니다.
local conf = {
profile = {
enable = true,
threshold = 0, -- the amount in ms that a plugins load time must be over for it to be included in the profile
},
display = {
open_fn = function()
return require("packer.util").float { border = "rounded" }
end,
},
}
시작 시간을 최적화하기 위해 packer.nvim은 사용자가 지정한 지연 로드 작업을 수행하기 위해 코드를 컴파일합니다.
:PackerCompile을 실행하여 컴파일된 로더 파일(packer_compiled.lua)을 생성하는지 확인합니다.
Neovim을 다시 시작한 다음 :PackerProfile을 입력하십시오.
구성된 플러그인은 시작 시 자동으로 로드되며 모두 $XDG_DATA_ 아래에 있습니다.HOME 시작 폴더. 예를 들어, Neogit 플러그인을 로드하는 데 13ms가 걸립니다.
패키지 관리
느린 로드
더 나은 스타트업 성능을 위해, 우리는 플러그인이나 패키지가 필요할 때 로드해야 합니다. packer.packim은 부하가 느린 플러그인에 대한 여러 옵션을 지원합니다.
- cmd: 이 플러그인을 로드하는 명령을 지정합니다. autocmd 패턴일 수 있습니다.
- ft: 이 플러그인을 로드하는 파일 형식을 지정합니다.
- keys: 이 플러그인을 로드하는 맵을 지정합니다.
- event: 이 플러그인을 로드하는 자동 커맨드 이벤트를 지정합니다.
- fn: 이 플러그인을 로드하는 함수를 지정합니다.
- condition: 이 플러그인을 로드하기 위한 조건부 테스트를 지정합니다.
- module: 필요한 Lua 모듈 이름을 지정합니다. 이러한 모듈 이름 중 하나로 시작하는 문자열이 필요한 경우 플러그인이 로드됩니다.
- module_pattern: 필요한 Lua 모듈 이름의 Lua 패턴을 지정합니다. 이러한 패턴 중 하나와 일치하는 문자열이 필요한 경우 플러그인이 로드됩니다.
cmd를 사용하여 느리게 로드
우리의 Neogit 플러그인의 경우 Neogit 명령이 트리거될 때만 로드되도록 변경합시다.
lua/plugins.lua에서 명령이 트리거될 때만 Neogit을 로드하도록 줄을 추가하십시오.
use {
"TimUntersberger/neogit",
cmd = "Neogit",
requires = "nvim-lua/plenary.nvim",
config = function()
require("config.neogit").setup()
end,
}
plugins.lua를 자동으로 컴파일하도록 autocmd를 구성했으므로 :PackerCompile을 실행할 필요가 없습니다. 그러나 변경 사항이 적용되지 않는 경우 로더 파일을 수동으로 컴파일해 보십시오.
Neovim을 다시 시작하고 :PackerProfile을 실행합니다.
지금 Neogit 플러그인이 로드되지 않은 것을 볼 수 있습니다. $XDG_DATA_HOME 폴더에서는 이제 opt 폴더(이전에는 시작 폴더 아래에 있음) 아래에 있습니다.
:Neogit 명령을 실행해 보십시오. 그러면 Neogit 플러그인이 느리게 로드됩니다.
이벤트를 사용하여 느리게 로드
이벤트 옵션을 사용하여 플러그인의 로드를 지연시켜 보겠습니다.
-- WhichKey
use {
"folke/which-key.nvim",
event = "VimEnter",
config = function()
require("config.whichkey").setup()
end,
}
-- IndentLine
use {
"lukas-reineke/indent-blankline.nvim",
event = "BufReadPre",
config = function()
require("config.indentblankline").setup()
end,
}
- VimEnter(:h VimEnter) 이벤트에 로드되도록 WhatKey 플러그인을 구성합니다.
- Indent-BlankLine 플러그인이 BufReadPre(:h BufReadPre) 이벤트에 로드되도록 구성합니다.
Neovim을 다시 시작하고 :PackerProfile을 실행합니다. 지금은 색 구성표와 시작 화면 플러그인만 로드됩니다.
다른 플러그인 로드 지연
우리는 아래와 같은 플러그인을 설치하고 느리게 적재할 것입니다.
- 더 나은 아이콘을 위한 nvim-web-devicon.
- 댓글 달기 위해 comment.nvim.
- 더 나은 동작을 위해 홉과 광속.nvim.
- Markdown-Preview를 클릭하여 Markdown 파일을 미리 봅니다.
fontrol.nvim의 경우, "필수" 시 lazy load로 변경하기도 합니다.
lua/plugins.lua에서 플러그인을 추가합니다.
- :PackerInstall을 실행하여 플러그인을 설치합니다.
- Neovim을 다시 시작하고 :PackerProfile을 실행합니다. 시작 성능에 영향을 주지 않는 것을 알 수 있습니다.
모든 플러그인은 $XDG_DATA_에 있습니다.HOME 옵션 폴더.
:PackerStatus를 실행하고 플러그인의 상태를 확인합니다.
연습 - 명령 또는 키를 트리거하여 플러그인을 로드하고 :PackerStatus를 다시 실행합니다.
기타 기능
packer.nvim이 제공하는 더 많은 기능들이 있습니다. 선택적으로 플러그인을 사용하지 않도록 설정하고, 플러그인에 특정 커밋/태그/브랜치에 태그를 지정하고, 업데이트 후/설치 후크 등을 실행할 수 있습니다. 설명서를 참조하여 실험해 보십시오.
모든 Vim/Neovim 기사를 보려면 Learn Neovim The Practical Way를 확인하십시오!
아직 회원가입이 되지 않은 경우 여기를 클릭하십시오. 가입비 중 일부는 알파2phi를 지원하는 데 사용됩니다.
'프로그래밍' 카테고리의 다른 글
책임 연쇄 설계 패턴 (0) | 2021.12.30 |
---|---|
Google Foobar Challenge의 팁과 힌트 (0) | 2021.12.30 |
Fled 바코드 스캐너 만들기 (0) | 2021.12.30 |
코딩하는 방법을 배우십시오. (0) | 2021.12.30 |
싱글톤 — 단일 인스턴스의 아름다움 (0) | 2021.12.30 |
댓글