Skip to content
0

Neovim 配置

当前使用最多的 Neovim 配置,是基于 Josean Martinez 的 YouTube 视频,一步一步,照虎画猫,依葫芦画瓢,慢慢搭建起来的。后面又结合 Mr Jakob 的 nvim-from-scrach 系列,借鉴和优化了部分配置文件。

配置结构

因为是最常用的配置版本,所以配置文件放置在 ~/AppData/Local/nvim/ 内,相当于是配置文件的根目录。本配置使用了 lazy.nvim 作为插件管理器,采用了结构化的配置方法。以下是配置结构:

sh
C:\Users\Lenovo\AppData\Local\nvim
├── init.lua
├── lazy-lock.json
├── lazyvim.json
├── lua
|  └── alowree
|     ├── core
|     |  ├── init.lua
|     |  ├── keymaps.lua
|     |  └── options.lua
|     ├── lazy.lua
|     └── plugins
|        ├── alpha-alpha.lua
|        ├── auto-session.lua
|        ├── blink-cmp.lua
|        ├── bufferline.lua
|        ├── bullets.lua
|        ├── colorscheme.lua
|        ├── comment.lua
|        ├── conform.lua
|        ├── dressing.lua
|        ├── fzflua.lua
|        ├── gitsigns.lua
|        ├── indent-blankline.lua
|        ├── init.lua
|        ├── lazygit.lua
|        ├── lsp.lua
|        ├── lualine.lua
|        ├── nvim-tree.lua
|        ├── pangu.lua
|        ├── sleuth-vim.lua
|        ├── surround.lua
|        ├── treesitter.lua
|        └── which-key.lua
└── spell
   ├── en.utf-8.add
   └── en.utf-8.add.spl

1、init.lua 是主配置文件,导入了两组文件:

lua
require("alowree.core")
require("alowree.lazy")

2、lua/alowree/core/init.lua 导入了 keymaps.luaoptions.lua 两个文件

Is this file (lua/alowree/core/init.lua) necessary?

Yes, this file is necessary. It acts as a central entry point to load other core configuration modules (options, keymaps, and autocmds) defined in the lua/alowree/core/ directory, ensuring they are all initialized when Neovim starts.

Why the Lua files under the plugins folder are not required explicitly?

The Lua files under the lua/alowree/plugins/ folder are not explicitly required because they are managed and loaded by the lazy.nvim plugin manager. The lua/alowree/lazy.lua configuration includes { import = "alowree.plugins" }, which instructs lazy.nvim to automatically discover and load all plugin configurations within that directory.

As the entire plugins folder are loaded inside lazy.nvim, can I just do the same with the core folder, by changing the current configuration to { import = "alowree.core", import = "alowree.plugins }, and then remove the /lua/alowree/core/init.lua file?

No, you cannot do that. The import key in lazy.nvim's setup is specifically designed to load plugin specifications. Each file in an imported directory (like lua/alowree/plugins/) is expected to return a table that defines a plugin.

The files in your lua/alowree/core/ directory, however, are not plugin specifications. They are general configuration files that directly set Neovim options, keymaps, and autocommands. They don't return tables in the format lazy.nvim expects for plugins.

If you were to add import = "alowree.core" and remove lua/alowree/core/init.lua, your core configurations would simply not be loaded, and lazy.nvim would likely show errors or ignore the files.

Therefore, the current method of using require("alowree.core.options"), etc., inside lua/alowree/core/init.lua is the correct and idiomatic way to load your core Neovim settings.

3、alowree/lazy.lua 做了两件事情:加载 lazy 自己,加载 alowree.plugins 下的所有文件

4、alowree/plugins/init.lua, 引入这两个插件作何用途?

lua
    return {
    "nvim-lua/plenary.nvim",          -- lua functions that many plugins use
    "christoomey/vim-tmux-navigator", -- tmux & split window navigation
                                      -- works for PowerShell on Windows too
    }

插件管理

使用 lazy.nvim 做为插件管理器,然后所有的插件文件都使用 Lua 进行配置。

lazy.nvim is a modern plugin manager for Neovim.

按照 lazy.nvim —— Installation 官方文档调整了一下 alowree/lazy.lua 内的配置,将 leader 键的配置位置由原先的 alowree/core/keymaps.lua 转移至 alowree/lazy.lua 当中,然后对调二者在主配置文件中的导入顺序:保证 leader 键先定义,后使用的原则。也就是在 alowree/lazy.lua 中定义 leader 键,在 alowree/core/options.luaalowree/core/keymaps.lua 使用。

lua
require("alowree.lazy")
require("alowree.core")

使用 Lua 配置

全部的配置使用 Lua 语言,所以新手需要学习一点点 Lua 的编程知识。

关于 Lua

When configuring Neovim using Lua, do I need to install any Lua interpreter on my computer? Or Does Neovim ship with a built-in Lua related interpreter already?

Neovim has a built-in Lua interpreter (specifically LuaJIT, which is Lua 5.1-compatible with some 5.2 extensions). This means:

  1. You don't need to install Lua separately for basic Neovim configuration.

    • The Lua runtime is embedded directly into Neovim.
    • Your init.lua and other Lua config files are executed by Neovim's built-in LuaJIT.
  2. When external Lua is needed (rare cases):

    • If you use plugins or tools that call lua from the command line (e.g., :!lua script.lua), you’ll need a system-wide Lua installation.
    • Some plugins may require newer Lua features (e.g., Lua 5.3+), but this is uncommon since most Neovim plugins target LuaJIT (5.1).

Key Notes:

  • Neovim’s Lua API (vim.*, nvim_*) is only available in the embedded Lua runtime.
  • For require to work, ensure your Lua files are in Neovim’s runtimepath (e.g., ~/.config/nvim/lua/ or ~/AppData/Local/nvim/lua/).
  • To check the Lua version Neovim uses, run :lua print(_VERSION) in Neovim (should output "Lua 5.1" or similar).

Summary:

  • Default configs: No extra Lua install needed.
  • Edge cases: Only install Lua system-wide if a plugin/tool explicitly requires it outside Neovim’s runtime.

For most users, Neovim’s built-in Lua is sufficient. 🚀

最近更新