---@type ChadrcConfiglocalM={}-- Path to overriding theme and highlights fileslocalhighlights=require"custom.highlights"M.ui={theme="onedark",theme_toggle={"onedark","one_light"},hl_override=highlights.override,hl_add=highlights.add,}M.plugins="custom.plugins"-- check core.mappings for table structureM.mappings=require"custom.mappings"returnM
이 파일은 파일 ~/.config/nvim/lua/core/utils.lua에 설정된 load_config 기능에 의해 Neovim 구성에 삽입됩니다. 이 기능은 기본 설정 및 _chadrc.lua_의 설정(있는 경우)을 로드하는 기능입니다.
이 함수는 사용자 정의 폴더에서 파일을 NvChad 구성에 삽입하여 기본 파일과 함께 Neovim 인스턴스를 시작할 때 사용됩니다. 파일은 require 함수를 통해 구성 트리에 삽입됩니다. 예를 들어:
require"custom.mappings"
이 파일은 ~/.config/nvim/lua/core/utils.lua 파일에서 설정된 load_config 함수에 의해 Neovim 구성에 삽입됩니다. 이 함수는 기본 설정을 로드하고, 필요한 경우 chadrc.lua 의 설정도 함께 로드하는 역할을 합니다:
요약하자면, 위에서 설명한 호출은 custom/mappings.lua 파일에 작성된 구성을 NvChad 매핑에 삽입하여 플러그인의 명령을 호출하는 단축키를 삽입합니다.
또한, M.ui 섹션을 통해 ~/.config/nvim/lua/core/default_config.lua에 포함된 NvChad UI 구성 설정을 덮어쓰는 섹션이 있습니다. 이 섹션을 사용하여 밝거나 어두운 테마를 선택할 수 있습니다.
그리고 custom/plugins.lua에 정의된 플러그인들을 "custom.plugins" 문자열에 대응하여 포함합니다:
M.plugins="custom.plugins"
이렇게 하면 우리의 플러그인들이 NvChad 구성을 구성하는 플러그인들과 함께 lazy.nvim 에 전달되어 설치 및 관리됩니다. 이 경우에는 포함이 Neovim 트리가 아닌 lazy.nvim 의 구성에 있으며, lazy.nvim 은 vim.go.loadplugins = false 호출로 편집기의 관련 기능을 완전히 비활성화합니다.
이 파일은 ~/.config/nvim/lua/core/init.lua에서 정의된 설정(들여쓰기 또는 디스크로의 스왑 쓰기 간격 등)을 덮어씁니다. 또한 파일에 주석 처리된 줄에 설명된대로 auto-commands를 생성하는 데 사용됩니다. 예를 들면 다음과 같이 마크다운 문서 작성을 위한 일부 설정이 포함될 수 있습니다:
--local autocmd = vim.api.nvim_create_autocmd-- settings for Markdownlocalopt=vim.optopt.tabstop=4opt.softtabstop=4opt.shiftwidth=4opt.shiftround=falseopt.expandtab=trueopt.autoindent=trueopt.smartindent=true-- Auto resize panes when resizing nvim window--autocmd("VimResized", {-- pattern = "*",-- command = "tabdo wincmd =",-- })
이 매핑은 NORMAL 상태 n = 문자 ; 를 누를 때 문자 :를 실행합니다. 이 문자는 COMMAND 모드로 들어가기 위해 사용되는 문자입니다. 또한 옵션 nowait = true가 지정되어 즉시 그 모드로 진입합니다. 이렇게 함으로써 US QWERTY 레이아웃의 키보드에서는 COMMAND 모드로 진입하기 위해 SHIFT를 사용할 필요가 없게 됩니다.
lspconfig.lua 파일은 편집기에서 사용할 수 있는 로컬 언어 서버를 설정합니다. 이를 통해 자동 완성이나 스니펫과 같은 고급 기능을 지원하는 파일에 대해 사용할 수 있습니다. 설정에 우리의 lsp_를 추가하려면 NvChad 개발자들이 특별히 준비한 테이블(_lua 에서 중괄호로 표현되는 것은 테이블입니다)에 간단히 입력하면 됩니다:
localservers={"html","cssls","tsserver","clangd"}
기본적으로 일부 서버가 이미 설정되어 있는 것을 볼 수 있습니다. 새로운 서버를 추가하려면 테이블 끝에 해당 서버를 입력하면 됩니다. 사용 가능한 서버는 mason 패키지에서 찾을 수 있으며, 구성에 대한 정보는 lsp 서버 구성을 참조할 수 있습니다.
그러나 파일을 변경하는 것은 관련 언어 서버를 설치하는 것을 의미하지는 않습니다. 이제 Rocky Linux 문서 페이지의 헤더 (frontmatter)에 작성된 코드를 제어할 수 있게 될 것입니다. 이는 별도로 Mason 을 사용하여 설치해야 합니다. yaml 을 지원하는 언어 서버인 yaml-language-server를 명령어 :MasonInstall yaml-language-server 로 설치해야 합니다.
overrides.lua 파일에는 기본 플러그인 설정을 변경해야 하는 내용이 포함되어 있습니다. 변경 사항이 적용되어야 할 플러그인은 custom/plugins.lua 파일의 -- override plugin configs 섹션에서 opts 옵션을 사용하여 지정됩니다 (예: opts = overrides.mason).
초기 구성에서는 treesitter, mason 및 nvim-tree 와 같이 변경이 필요한 세 개의 플러그인이 지정되어 있습니다. 일단 nvim-tree 를 제외하고 첫 번째 두 개에 초점을 맞추어 우리의 편집 경험을 크게 변경할 수 있습니다.
treesitter 는 상호 작용적으로 코드를 서식 지정하는 코드 파서입니다. treesitter 가 인식하는 파일을 저장할 때마다 해당 파일이 파서로 전달되며 최적으로 들여쓰고 강조 표시된 코드 트리를 반환하여 코드를 더 쉽게 읽고 해석하며 편집할 수 있게 해줍니다.
실행 중인 NvChad에서 파서를 직접 사용할 수 있도록 하려면 파일을 수정하지 않고도 다음 명령을 사용하여 항상 설치할 수 있습니다:
:TSInstall yaml
파일에서 다음은 Mason_에 의한 서버 설치에 관한 부분입니다. 이 테이블에 설정된 모든 서버는 :MasonInstallAll 명령을 사용하여 한 번에 설치됩니다 (이 명령은 _custom 폴더 생성 중에도 호출됩니다). 이 부분은 다음과 같습니다:
M.mason={ensure_installed={-- lua stuff"lua-language-server","stylua",-- web dev stuff"css-lsp","html-lsp","typescript-language-server","deno","prettier"},}
이전에 yaml 지원을 활성화하기 위해 수동으로 서버를 설치한 예제를 따라서 해당 서버를 항상 설치되도록 하려면 테이블에 추가할 수 있습니다:
NvChad가 실행 중인 인스턴스에서 이 측면은 한계일 수 있지만 누락된 서버를 항상 수동으로 설치할 수 있으므로 한 컴퓨터에서 다른 컴퓨터로 구성을 전송할 때 매우 도움이 될 수 있습니다.
예를 들어, 필요한 모든 기능을 갖춘 사용자 정의 폴더를 구성하고 이를 다른 NvChad 설치로 전송하려고 한다고 가정해 봅시다. 이 파일을 구성했다면 사용자 정의 폴더를 복사하거나 복제한 후 :MasonInstallAll 명령을 사용하면 다른 설치에서도 사용할 준비가 된 모든 서버를 갖게 됩니다.
구성의 마지막 부분인 M.nvimtree 섹션은 nvim-tree 를 구성하는 데 사용되며, 파일 트리에서 git 리포지토리와 관련하여 상태를 표시하는 기능을 활성화합니다: