Skip to content

Latest commit

 

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Neovim 配置

一套使用 Lua 编写的 Neovim 配置,面向 C/C++、Python、Lua、Shell、JSON 和 Markdown 开发。插件由 lazy.nvim 管理,集成了 LSP、代码补全、格式化、文件搜索、文件树和快捷键提示。

主要功能

  • One Dark Pro 主题、Bufferline 和 Lualine
  • Treesitter 语法高亮、缩进和代码折叠
  • Mason 管理语言服务器
  • nvim-cmp、LuaSnip 和 friendly-snippets 代码补全
  • Lspsaga、Trouble 和 lsp_signature 增强 LSP 交互
  • Telescope 文件搜索、文本搜索和 vim.ui.select 界面
  • nvim-tree 文件管理
  • Which-key 快捷键提示
  • Conform 统一代码格式化
  • GBK、GB18030 和 UTF-8 文件编码兼容

环境要求

  • Neovim 0.12 或更高版本
  • Git
  • tree-sitter-cli 0.26.1 或更高版本,用于安装 Treesitter 解析器;需要安装与系统架构匹配的版本并确保命令位于 PATH
  • Node.js 和 npm,供 Mason 安装 pyrightbashlsjsonls 等语言服务器
  • make 和 C 编译器,用于构建 telescope-fzf-native.nvim
  • ripgrep,用于 Telescope 文本搜索
  • Nerd Font,推荐用于正确显示图标
  • styluaclang-formatblack 等对应格式化工具,需要根据使用的语言自行安装

平台说明

  • Linux 需要安装对应发行版提供的 make、C 编译器和 Node.js/npm;使用系统剪贴板时,还需要安装 xclipxselwl-clipboard
  • macOS 建议执行 xcode-select --install 安装 Xcode Command Line Tools,其中包含 make 和 Apple Clang;系统剪贴板可直接使用自带的 pbcopypbpaste
  • Apple Silicon 应安装 ARM64 版本的 tree-sitter-cli,Intel Mac 和常见的 x86_64 Linux 应安装 x86_64 版本。
  • Mason 会根据当前操作系统和 CPU 架构下载对应的语言服务器,不需要在配置中写死安装路径。

安装

如果已经存在 Neovim 配置,请先备份:

mv ~/.config/nvim ~/.config/nvim.bak

克隆配置:

git clone https://github.com/lichao-dev/nvim-config.git ~/.config/nvim

启动 Neovim:

nvim

首次启动时,lazy.nvim 会自动安装插件,Mason 会安装配置中声明的语言服务器。

目录结构

.
├── init.lua                 # 配置入口
├── lua
│   ├── config
│   │   ├── keymaps.lua      # 全局快捷键
│   │   ├── lazy.lua         # lazy.nvim 初始化
│   │   └── options.lua      # Neovim 基础选项
│   └── plugins
│       ├── appearance.lua   # 主题、顶部栏、状态栏
│       ├── completion.lua   # nvim-cmp 和 LuaSnip 补全
│       ├── editor.lua       # Git 标记、注释、括号补全
│       ├── explorer.lua     # 文件树和符号大纲
│       ├── format.lua       # Conform 格式化
│       ├── lsp-ui.lua       # Lspsaga、参数提示、诊断列表
│       ├── lsp.lua          # LSP 服务配置和局部快捷键
│       ├── mason.lua        # 语言服务器安装与管理
│       ├── snippets.lua     # 代码片段
│       ├── telescope.lua    # 文件和文本搜索
│       ├── treesitter.lua   # 语法高亮、缩进和折叠
│       └── which-key.lua    # 快捷键提示和分组
└── snippets
    └── c.json               # 自定义 C 代码片段

LSP 支持

文件类型 语言服务器
C/C++ clangd
Python pyright
Lua lua_ls
Shell bashls
JSON jsonls
Markdown marksman

LSP 相关快捷键只在语言服务器成功连接当前缓冲区后创建。

快捷键

<leader> 设置为空格键。按下空格并稍作等待,可以通过 which-key 查看当前可用快捷键。

常用操作

快捷键 功能
<leader>w 保存文件
<leader>q 关闭当前窗口
<leader>Q 强制退出全部窗口
<leader>e 打开或关闭文件树
<leader>? 查看当前缓冲区的局部快捷键
<M-z> 切换软换行
<F8> 打开或关闭符号大纲

窗口和 Buffer

快捷键 功能
<C-h> 移动到左侧窗口
<C-j> 移动到下方窗口
<C-k> 移动到上方窗口
<C-l> 移动到右侧窗口
<A-Left> / <A-Right> 调整窗口宽度
<A-Up> / <A-Down> 调整窗口高度
<S-h> / <S-l> 切换上一个或下一个 Buffer

Telescope

快捷键 功能
<leader>ff 查找文件
<leader>fg 全局文本搜索
<leader>fb 查找已打开的 Buffer
<leader>fh 查找帮助文档
<leader>fr 查找最近打开的文件
<leader>fc 搜索光标下的单词
<leader>fk 搜索快捷键
<leader>/ 在当前 Buffer 中搜索
<leader>fs 查找当前文件的 LSP 符号
<leader>fw 查找工作区的 LSP 符号

其中 <leader>fs<leader>fw 只在当前 Buffer 连接 LSP 后出现。

LSP

快捷键 功能
gd 跳转到定义
gD 跳转到类型定义
gi 查找实现
gr 查找定义和引用
gf 打开 Lspsaga Finder
gl 显示当前行诊断
K 显示悬浮文档
<leader>rn 重命名符号
<leader>ca 使用 Lspsaga 执行 Code Action
<leader>cA 调用 Neovim 原生 Code Action,并使用 Telescope 选择菜单
<leader>cf 格式化当前 Buffer
[d / ]d 跳转到上一个或下一个诊断
<leader>xx 显示当前文件诊断
<leader>xX 显示工作区诊断

代码补全

快捷键 功能
<C-Space> 手动触发补全
<CR> 确认当前补全项
<Tab> 选择下一项或展开、跳转代码片段
<S-Tab> 选择上一项或向前跳转代码片段
<C-b> / <C-f> 向上或向下滚动补全文档

文件树操作

<leader>e 打开 nvim-tree,将光标移动到文件树后可以使用:

快捷键 功能
a 新建文件或目录,目录名以 / 结尾
r 重命名文件或目录
e 重命名文件主体并保留扩展名
u 修改完整路径,可用于移动文件
d 删除文件或目录
<CR> 打开文件
R 刷新文件树
q 关闭文件树

使用 <C-h> 可以从编辑区进入左侧文件树,使用 <C-l> 返回编辑区。

格式化

文件类型 格式化器
Lua stylua
C/C++ clang-format
Python black,失败时回退到 LSP

Lua 文件保存时自动格式化。其他文件可以使用 <leader>cf 手动格式化;外部格式化器不可用时会尝试回退到 LSP。

常用检查命令

:Lazy
:Mason
:LspInfo
:checkhealth
:checkhealth which-key

License

MIT

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages