Neovim + LazyVim 现代化配置笔记(Linux)

Neovim + LazyVim 现代化配置笔记(Linux)

Neovim + LazyVim 现代化配置笔记

文章目录


1. 核心前置准备 (Prerequisites)

在安装 Neovim 之前,必须准备好以下环境,否则插件功能(如搜索、图标显示)会失效。

1.1 Nerd Fonts (必须)

LazyVim 严重依赖图标字体来美化界面。

  • 设置:在终端(Terminal/iTerm2/Alacritty/Windows Terminal)设置中,将字体修改为你安装的 Nerd Font。
  • 官网下载Nerd Fonts Official Downloads

操作:下载并安装一个 Nerd Font(推荐 JetBrainsMono Nerd FontHack Nerd Font)。

image-20260212113224809

1.2 基础构建工具

很多插件(如 Telescope, Treesitter)需要编译或依赖外部工具。

  • macOS: brew install ripgrep fd gcc lazygit
  • Ubuntu/Debian: sudo apt install build-essential ripgrep fd-find git (注意: fd可能需要做软链接)
  • ArchLinux: sudo pacman -S base-devel ripgrep fd git lazygit
  • Windows: 建议使用 Scoop 或 Chocolatey 安装 ripgrep, fd, gcc, lazygit

2. 安装 Neovim (Stable Release)

LazyVim 要求 Neovim 版本至少为 0.9.0+(推荐 0.10+)。

各平台安装指令:

Linux (通用/推荐):Arch Linux (Pacman): Arch 的官方仓库通常紧跟上游版本,直接安装即可获得最新的稳定版(无需编译):

sudo pacman -S neovim 

下载 AppImage 是最快且不依赖系统包管理器版本的方法:

curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim.appimage chmod u+x nvim.appimage ./nvim.appimage # 建议将其移动到 /usr/local/bin 并重命名为 nvim

Windows (Winget):

winget install Neovim.Neovim 

macOS (Homebrew):

brew install neovim 

验证安装:终端输入 nvim --version


3. 部署 LazyVim (配置管理)

我们将使用官方推荐的克隆仓库方式,这样既拥有了完整的配置,又方便后续使用 Git 管理自己的修改。

3.1 备份旧配置 (如果有)

# requiredmv ~/.config/nvim{,.bak}# optional but recommendedmv ~/.local/share/nvim{,.bak}mv ~/.local/state/nvim{,.bak}mv ~/.cache/nvim{,.bak}

3.2 克隆 LazyVim Starter

git clone https://github.com/LazyVim/starter ~/.config/nvim 

3.3 移除 .git 文件夹 (可选)

如果你想把这个配置变成你自己的 Git 仓库:

rm -rf ~/.config/nvim/.git cd ~/.config/nvim git init 

3.4 首次启动

在终端输入 nvim

安装好插件后重新启动neovim

# 打开当前文件夹 nvim .
image-20260212115425155

注意:首次启动时,LazyVim 会自动通过 lazy.nvim 包管理器下载几十个插件。请耐心等待,直到出现 Dashboard 界面。

image-20260212114921546

4. LazyVim 核心操作逻辑

LazyVim 修改了许多原生 Vim 的默认行为,使其更符合现代 IDE 的直觉。

核心键位 (Leader Key): 默认为 空格键 (<Space>)。下文中的 <leader> 均指代空格键。

4.1 窗口与文件导航 (Window & Buffer)

LazyVim 极大地简化了多窗口和多文件的切换逻辑。

目标快捷键说明
文件树 (Explorer)<leader> e打开/关闭 NeoTree 文件树
查找文件<leader> <space>相当于 VSCode 的 Ctrl+P,查找项目内文件
全局搜索<leader> s gGrep 搜索 (依赖 ripgrep),搜索全项目内容
切换 BufferShift-h / Shift-lShift+H (左) / Shift+L (右) 切换顶部标签页
窗口跳转Ctrl + h/j/k/l在分割的窗口之间光标跳转 (无需按 Ctrl+w)
关闭当前 Buffer<leader> b d安全关闭当前文件标签
垂直分屏<leader> \ 左右分屏
水平分屏<leader> -上下分屏

4.2 代码编辑与 LSP 功能 (IDE Features)

LazyVim 默认配置了强大的 LSP (Language Server Protocol) 支持。

目标快捷键说明
查看定义g dGoto Definition
查看引用g rGoto References (会打开列表)
悬停文档K查看函数/变量的文档提示
代码格式化<leader> c fFormat (使用 Prettier 或 LSP 格式化)
代码重命名<leader> c rRename (重构变量名,全局生效)
代码操作<leader> c aCode Action (快速修复,如自动导包)
诊断错误<leader> x x打开底部面板显示当前项目的所有错误/警告

4.3 插件与系统管理

目标快捷键/命令说明
插件管理面板<leader> l打开 Lazy 界面,查看插件更新、启动时间
安装lazy扩展:LazyExtras打开Extras界面,x键安装插件
LSP/工具安装:Mason打开 Mason 界面,手动安装 LSP server, linter 等
健康检查:checkhealth遇到问题时的第一步,检查环境缺失
键位映射查询<leader> s k非常重要:搜索当前所有可用的快捷键
  • :LazyExtras安装python和json

退出然后打开neovim自动安装

image-20260212124409467

若是提示需要pyright可以用系统包管理器安装:

sudo pacman -S pyright 

5. 自定义配置指南 (Configuration)

LazyVim 的目录结构非常清晰,遵循“用户配置覆盖默认配置”的原则。

目录结构: ~/.config/nvim/

├── init.lua # 入口文件 (通常不动) ├── lazy-lock.json # 插件版本锁定文件 ├── lua │ ├── config # 用户基础配置 │ │ ├── autocmds.lua # 自动命令 │ │ ├── keymaps.lua # 自定义快捷键 │ │ ├── lazy.lua # 插件加载逻辑 │ │ └── options.lua # Vim 选项 (如行号、缩进) │ └── plugins # 用户插件配置 (重点在这里) │ ├── example.lua │ └── ... 

5.1 修改基础设置 (options.lua)

编辑 lua/config/options.lua

-- 示例:开启相对行号 vim.opt.relativenumber =true-- 示例:设置缩进为 4 空格 vim.opt.tabstop =4 vim.opt.shiftwidth =4

5.2 添加/修改插件 (plugins 目录)

LazyVim 使用 lazy.nvim 的 specs 机制。你只需要在 lua/plugins/ 目录下新建 .lua 文件即可。

案例 1:安装一个新插件 (Supermaven)

新建 lua/plugins/supermaven.lua:

return{"supermaven-inc/supermaven-nvim", config =function()require("supermaven-nvim").setup({})end,}

案例 2:修改 LazyVim 内置插件配置 (Colorscheme)

LazyVim 默认使用 Tokyo Night。如果你想换成 Catppuccin。

新建 lua/plugins/theme.lua:

return{-- 1. 下载新主题{"catppuccin/nvim", name ="catppuccin", priority =1000},-- 2. 配置 LazyVim 加载该主题{"LazyVim/LazyVim", opts ={ colorscheme ="catppuccin",},},}

案例 3:添加语言支持

LazyVim 提供了 “Extras” 模块,可以一键开启对 Python, Rust, Go 等语言的完美支持。

  • 操作:在 Neovim 中输入 :LazyExtras
  • 选择:使用方向键找到你需要的语言(例如 lang.python),按 x 启用。
  • 重启 Neovim,它会自动安装 Pyright, Ruff 等工具。

6. 常见问题 (Troubleshooting)

  1. 图标显示乱码
    • 检查终端字体是否为 Nerd Font
    • 如果是 Docker 或 SSH 环境,确保本地终端字体正确。
  2. LSP 报错或未生效
    • 输入 :Mason 查看对应语言的 Server 是否已安装。
    • 输入 :LspInfo 查看当前文件是否连接到了 LSP 客户端。
  3. Treesitter 报错 (高亮失效)
    • 输入 :TSUpdate 更新解析器。
    • 确保系统安装了 C 编译器 (gccclang)。
  4. 快捷键冲突
    • 使用 <leader> s k (Search Keymaps) 输入你想按的键,查看它被绑定到了什么功能。

系统剪切板与neovim不互通Arch系列:

# 对于x11桌面:sudo pacman -S xclip # 对于wayland桌面:sudo pacman -S wl-clipboard 

Debian系:

# 对于x11桌面:sudo pkg install xclip # 对于wayland桌面:sudo pkg install wl-clipboard 

neovim中查看系统剪贴板内容:

:reg # "+与"*中的是系统的,其他是neovim yark的寄存器

系统ctrl+c复制文字neovim中粘贴

# neovim中粘贴"+p # or "*p 

neo中复制内容

# v选中 或者 shift V选中行 V y 

一般这时候系统ctrl+v即可粘贴,无效则需要配置:在~/.config/nvim/init.vim中加入下面一行,目录或文件不存在则新建一个

setclipboard+=unnamedplus 

找不到fd 需要下载fd用来检索文件Arch系:

sudo pacman -S fd 

Debian系:

sudoaptinstall fd-find # 若是neovim检测不到fdln -s $(which fdfind) ~/.local/bin/fd 

macOS:

brew install fd 

Node.js / Python 提供者缺失某些插件(如 Markdown 预览、Copilot)需要 Node.js 环境。Arch 用户需单独安装:

sudo pacman -S nodejs npm python-pynvim 

python-pynvim 是 Python 插件与 Neovim 通信的桥梁,建议安装。

Read more

Flutter 三方库 server_native 的适配鸿蒙实战 - 驾驭极致底层核心扩展,实现 OpenHarmony 端服务端进程的深绑动态二进制计算底座

Flutter 三方库 server_native 的适配鸿蒙实战 - 驾驭极致底层核心扩展,实现 OpenHarmony 端服务端进程的深绑动态二进制计算底座

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 server_native 的适配鸿蒙实战 - 驾驭极致底层核心扩展,实现 OpenHarmony 端服务端进程的深绑动态二进制计算底座 前言 随着鸿蒙(OpenHarmony)生态全力切入物联网与边缘计算领域,开发者们常常需要面对一个现实:虽然 Dart 语言在 IO 处理上极具优势,但在音视频硬解码、高密加密矩阵运算等极端场景下,Dart VM 的算力往往略显单薄。 想要在鸿蒙终端板上跑出服务器级的性能,单纯靠 Isolate 的横向扩容是不够的。我们需要一种能“扎进深坑榨性能”的技术,将鸿蒙底层针对特定芯片定制的 C++/Rust 原生库无缝整合进 Flutter 服务端。server_native 正是为了这种“跨界性能引渡”而生的强悍桥接阵列。它通过高效的 FFI

By Ne0inhk
Flutter 组件 http_retry 的适配 鸿蒙Harmony 深度进阶 - 驾驭分布式负载感知重试、实现鸿蒙端高可靠通讯与协议幂等性审计方案

Flutter 组件 http_retry 的适配 鸿蒙Harmony 深度进阶 - 驾驭分布式负载感知重试、实现鸿蒙端高可靠通讯与协议幂等性审计方案

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 http_retry 的适配 鸿蒙Harmony 深度进阶 - 驾驭分布式负载感知重试、实现鸿蒙端高可靠通讯与协议幂等性审计方案 前言 在前文中,我们探讨了 http_retry 在鸿蒙(OpenHarmony)生态中解决单一移动终端弱网重试的基础实战。但在真正的“分布式工业物联网集成”、“跨设备协同办公资产同步”以及“需要对接具备动态压力管控的超大规模云原生后端”场景中。简单的指数退避往往难以应对复杂的网络分位震荡。面对一个需要在鸿蒙手机、智能穿戴设备与边缘网关之间,根据当前全网的平均负载压力(Load Pressure)动态调节重试节奏,并且要求在执行涉及核心资产变更(如:支付订单、库存锁定)的重试时执行绝对严密的协议幂等性(Idempotency)校验的高阶需求。如果缺乏一套具备分布式感知的重试调度模型。不仅会导致后端服务在故障恢复瞬间遭遇“重试波峰”引发再次崩溃,更会因为对非幂等操作的盲目重试。引发严重的业务资产错乱。 我们需要

By Ne0inhk
Flutter 组件 cli_repl 的适配 鸿蒙Harmony 实战 - 驾驭交互式终端开发、实现鸿蒙端强大 REPL 调试环境方案

Flutter 组件 cli_repl 的适配 鸿蒙Harmony 实战 - 驾驭交互式终端开发、实现鸿蒙端强大 REPL 调试环境方案

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 cli_repl 的适配 鸿蒙Harmony 实战 - 驾驭交互式终端开发、实现鸿蒙端强大 REPL 调试环境方案 前言 在鸿蒙(OpenHarmony)系统的高级开发与生产力工具构建中,“交互式控制台”是一个能够极大提升极客感的特性。想象一下,用户通过鸿蒙平板物理键盘输入指令,系统能够实时反馈计算结果,并支持像 Linux 终端一样的“向上滚动查看历史记录”和“Tab 键自动补全”。 这种被称为 REPL(Read-Eval-Print Loop)的交互模式,不仅是调试脚本的利器,更是构建鸿蒙版 IDE、远程运维终端或专业数学计算器的核心底座。 cli_repl 为 Dart 环境提供了一套标准、轻量的交互环实现。适配到鸿蒙平台后,我们需要解决的是如何精准捕获鸿蒙系统的标准输入流(

By Ne0inhk
Flutter 三方库 sparky 的鸿蒙化适配指南 - 实现极简 2D 游戏引擎功能、支持高效精灵图渲染与跨端游戏逻辑

Flutter 三方库 sparky 的鸿蒙化适配指南 - 实现极简 2D 游戏引擎功能、支持高效精灵图渲染与跨端游戏逻辑

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 sparky 的鸿蒙化适配指南 - 实现极简 2D 游戏引擎功能、支持高效精灵图渲染与跨端游戏逻辑 前言 在 Flutter for OpenHarmony 的娱乐化开发领域,我们有时需要构建一些轻量级的小游戏或交互动效,但又不想引入像 Flame 这样的大型游戏引擎。sparky 是一个定位极其精简的 2D 游戏开发框架。它提供了基础的层级管理、精灵渲染和碰撞检测。本文将探讨如何在鸿蒙端利用 sparky 快速搭建游戏原型。 一、原理解析 / 概念介绍 1.1 基础原理 sparky 通过在 Flutter 的 CustomPainter 之上建立了一套简易的场景树(Scene Tree)。它将每一个游戏元素抽象为节点,并提供高频刷新的引擎循环(Engine

By Ne0inhk