跳到主要内容

Neovim

我的配置

我使用过很多neovim的预配置,比如 lunarvim, astronvim, lazyvim,最后还是回归到了 插件管理器+自己写配置 的路子上来 因为只有这样才能在想要修改一些配置的时候,能够完全地自我掌控。

但是我会说那些预配置是没用的吗?不,我也是从其中吸取了很多知识,以至于现在配置里有很多东西都是去这些大佬的配置里面找出来的

其实我仍然建议小白同学先用某一种预配置,比如 lazyvim,这样在最开始的时候,你不用一上来就面对超级多的新东西,而只去尝试自定义某一些东西就行了

但是相信我,你在积累了足够的经验和关于neovim的知识之后,你会和我一样最终回到写自己的配置这条路来,但前面的折腾都是完全值得的,有用的。只是建议饭一口一口吃,路一步一步走,对自己的要求也是循序渐进的,可能不至于一上来吃瘪,然后就拜拜了。

我希望自己的经验能够帮助你节约到一些宝贵的时间,加入到 Neovim 中来

当然,虽然是用爱发电,如果你能给我放一点电,那真是极好的。

使用指南

运行时修改配置立即生效

配置的代码块尽力做到小块代码可直接选中并source生效, 从而做到能够在运行时微调配置并直接生效获得反馈, 感觉达到期望直接保存即可

进入配置代码 --> 修改配置 --> Source 修改 --> 体验效果 --> 达到效果

由于修改是发生在 配置代码 里的,所以全程不用退出 vim 就能达到效果,并且下次进入 vim 配置的改动依旧生效

  • Example: 修改快捷键. 非常常见的操作,但是我之前需要每次都重新启动,尝试修改后的快捷键是不是符合自己的心意

配置结构

去这里看看我的 配置

.
├── init.lua # 入口, lazy.vim 声明, 显式 require config
└── lua
├── config # 不依赖插件的配置
├── plugins # 插件
│   ├── init.lua # 所有的其他插件folder都会在这里被显式import
│   ├── editor-core # 核心插件:有这几个插件就可以像个不错的编辑器用了
│   ├── editor-enhance # 根据我的需求增强编辑器
│   ├── git # Git 相关的插件
│   ├── lang-core # language 相关的基础配置,比如 语法高亮,自动补全,测试,debug
│   ├── lang # 不同语言自己的配置包
│   └── ui # neovim 的样式
├── snippets # 自定义的 snippets
├── features # 自己写的功能,通常会依赖到 util 中的方法
└── util # 自己封装的一些常用方法,增加类型

详细讲解

  • init.lua 配置入口以及插件管理
  • lang-core 各个编程语言共享的基础配置
点击展开详细结构
.
├── READMD.md
├── init.lua
├── lazy-lock.json
└── lua
├── config
│   ├── autocmds.lua
│   ├── keymaps.lua
│   └── options.lua
├── features
│   └── terminal-and-run.lua
├── plugins
│   ├── dev
│   │   └── lazydev.lua
│   ├── editor-core
│   │   ├── auto-close.lua
│   │   ├── commands.lua
│   │   ├── neo-tree.lua
│   │   ├── telescope.lua
│   │   └── window-tab-management.lua
│   ├── editor-enhance
│   │   ├── aerial.lua
│   │   ├── bookmarks.lua
│   │   ├── comment.lua
│   │   ├── context-menu.lua
│   │   ├── copy.lua
│   │   ├── duplicate.lua
│   │   ├── encode-decode.lua
│   │   ├── flash.lua
│   │   ├── fold.lua
│   │   ├── fzf-lua.lua
│   │   ├── multi-cursor.lua
│   │   ├── project.lua
│   │   ├── scratch.lua
│   │   ├── smart-open.lua
│   │   ├── spectrum.lua
│   │   ├── surround.lua
│   │   ├── terminal-and-run.lua
│   │   ├── text-objects.lua
│   │   ├── triptych.lua
│   │   └── which-key.lua
│   ├── git
│   │   ├── diffview.lua
│   │   └── gitsign.lua
│   ├── init.lua
│   ├── lang
│   │   ├── example.lua
│   │   ├── http.lua
│   │   ├── json.lua
│   │   ├── lua.lua
│   │   ├── markdown.lua
│   │   ├── prisma.lua
│   │   ├── terraform.lua
│   │   └── tsjs.lua
│   ├── lang-core
│   │   ├── cmp.lua
│   │   ├── debug.lua
│   │   ├── formatting.lua
│   │   ├── lint.lua
│   │   ├── lsp.lua
│   │   ├── snippet.lua
│   │   ├── test.lua
│   │   ├── treesitter.lua
│   │   └── trouble.lua
│   └── ui
│   ├── bufferline.lua
│   ├── cursor-word.lua
│   ├── dropbar.lua
│   ├── edge.lua
│   ├── lualine.lua
│   ├── noice.lua
│   ├── notify.lua
│   ├── nui-components.lua
│   ├── satellite.lua
│   └── themes.lua
├── snippets
└── util
├── base
│   ├── fs.lua
│   ├── git.lua
│   ├── strings.lua
│   ├── sys.lua
│   └── table.lua
├── editor.lua
├── init.lua
├── lang.lua
└── log.lua