从零到精通 Neovim:Ubuntu 下的终极开发利器指南

本文带你从零配置 Neovim,在 Ubuntu 环境下打造一套媲美 VS Code 的高效开发环境,并结合真实项目(多文件夹结构)实战演练,让你一用就上手,一配就爱上!

Github:github.com/neovim/neov...

官网:neovim.io/

在 Linux 世界里,编辑器有两大流派:Emacs 与 Vim。

Neovim,作为 Vim 的现代化重生,不仅继承了 Vim 的高效哲学,还拥抱了插件生态与可扩展性,让开发体验直追 VS Code,具有诸多革命性改进:

  • 异步架构:插件运行不卡主线程,大文件编辑流畅\
  • 内置 LSP 支持:开箱即用的代码补全、跳转、错误诊断\
  • Lua 配置:比 Vimscript 更易读、更强大\
  • 浮动窗口、终端集成:多任务并行无压力\
  • 活跃的插件生态:模糊搜索、Git 集成、AI 辅助编码应有尽有

GitHub 斩获 91k+ Stars,被无数开发者誉为「终极编辑器」!

今天,我们就从 Ubuntu 环境 出发,带你一步步完成 Neovim 的安装、配置,并用一个真实的多文件夹项目做实战演示。

安装 Neovim(Ubuntu 环境)

APT 源的版本较低,可以在 Github 上下载 AppImage 后进行安装:

bash 复制代码
wget https://github.com/neovim/neovim/releases/download/v0.11.3/nvim-linux-x86_64.appimage
chmod u+x nvim-linux-x86_64.appimage
sudo mv nvim-linux-x86_64.appimage /usr/bin/nvim

验证安装:

bash 复制代码
nvim --version

能够输出如下所示的版本信息,说明安装没问题了:

txt 复制代码
NVIM v0.11.3
Build type: Release
LuaJIT 2.1.1741730670
Run "nvim -V1 -v" for more info

Neovim 的基本使用

  1. 打开文件
bash 复制代码
nvim filename
  1. 插入模式
    i 进入插入模式,Esc 退出到普通模式。
  2. 保存与退出
  • 保存::w
  • 退出::q
  • 保存并退出::wq
  1. 移动
  • 左下上右:h j k l
  • 按数字跳:10j 向下 10 行

打造现代化 Neovim

我们用 Lazy.nvim 作为插件管理器,让 Neovim 变得更智能。

1. 创建配置目录

bash 复制代码
mkdir -p ~/.config/nvim

2. 安装 Lazy.nvim

bash 复制代码
git clone https://github.com/folke/lazy.nvim.git ~/.local/share/nvim/lazy/lazy.nvim

3. 配置入口文件(~/.config/nvim/init.lua

lua 复制代码
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
  vim.fn.system({
    "git",
    "clone",
    "--filter=blob:none",
    "https://github.com/folke/lazy.nvim.git",
    "--branch=stable", -- latest stable release
    lazypath,
  })
end
vim.opt.rtp:prepend(lazypath)

-- 加载 Lazy.nvim
require("lazy").setup({
    -- 文件树
    {
        "nvim-tree/nvim-tree.lua",
        dependencies = { "nvim-tree/nvim-web-devicons" }
    },
    -- 模糊搜索
    {
        "nvim-telescope/telescope.nvim",
        dependencies = { "nvim-lua/plenary.nvim" }
    },
    -- LSP 语言服务
    {
        "neovim/nvim-lspconfig"
    },
    -- 语法高亮
    {
        "nvim-treesitter/nvim-treesitter",
        build = ":TSUpdate"
    }
})

-- nvim-tree 初始化配置
require("nvim-tree").setup({
    sort_by = "case_sensitive",
    view = {
        width = 30,
    },
    renderer = {
        group_empty = true,
    },
    filters = {
        dotfiles = false,
    },
})

保存并运行 Neovim:

bash 复制代码
nvim

第一次会自动安装插件,等待插件安装完成即可。

项目实战:多文件夹项目导航

假设我们有一个项目结构:

txt 复制代码
my-project/
├── backend/
│   ├── main.go
│   └── utils/
│       └── helper.go
├── frontend/
│   ├── index.html
│   └── src/
│       └── app.js
└── README.md

1. 打开项目根目录

bash 复制代码
nvim my-project

2. 启动文件树(nvim-tree)

在 Neovim 中输入:

bash 复制代码
:lua require("nvim-tree.api").tree.toggle()

你就能快速在多文件夹间切换。

3. 多窗口编辑

  • 水平分屏::sp file
  • 垂直分屏::vsp file
  • 在不同文件夹下快速对比代码毫无压力。

LSP 加持:代码提示与跳转

安装 LSP 支持,比如 Go 语言:

bash 复制代码
# 安装依赖
go install golang.org/x/tools/gopls@latest

# 配置GOPATH到环境变量中,已配置的可忽略
echo 'export PATH=$PATH:$(go env GOPATH)/bin' >> ~/.bashrc

init.lua 中添加:

lua 复制代码
require("lazy").setup({
    -- 再上面的依赖后面新增如下配置
    -- 代码补全引擎
    {
        "hrsh7th/nvim-cmp",
        dependencies = {
            "hrsh7th/cmp-nvim-lsp", -- LSP 补全源
            "L3MON4D3/LuaSnip",     -- 代码片段引擎
        },
    },
})

-- nvim-lspconfig 初始化配置
require("lspconfig").gopls.setup({
    settings = {
        gopls = {
            analyses = {
                unusedparams = true,
            },
            staticcheck = true,
        },
    },
    on_attach = function(client, bufnr)
        -- 绑定 LSP 快捷键(如跳转定义、悬停提示)
        vim.keymap.set("n", "gd", vim.lsp.buf.definition, { buffer = bufnr, desc = "Go to Definition" })
        vim.keymap.set("n", "K", vim.lsp.buf.hover, { buffer = bufnr, desc = "Hover Documentation" })
    end,
})

-- 设置 nvim-cmp
local cmp = require("cmp")
cmp.setup({
    snippet = {
        expand = function(args)
            require("luasnip").lsp_expand(args.body)
        end,
    },
    mapping = cmp.mapping.preset.insert({
        ["<C-Space>"] = cmp.mapping.complete(), -- 手动触发补全
        ["<CR>"] = cmp.mapping.confirm({ select = true }), -- 回车确认补全
    }),
    sources = cmp.config.sources({
        { name = "nvim_lsp" }, -- 启用 LSP 补全
    }),
})

现在你就能在多文件夹项目中享受智能补全、跳转定义、悬停提示等高级功能。

进阶技巧

  1. 项目切换 :用 telescope-project 插件管理多个项目。
  2. Git 集成tpope/vim-fugitive 让你在 Neovim 里完成 Git 操作。
  3. 终端内嵌 :用 :terminal 在 Neovim 内直接运行编译命令。

结语

Neovim 的魅力,不只是"编辑器",而是一个高度可定制的开发工作站

从今天起,让你的 Ubuntu + Neovim 组合,成为写代码的利器。

只要多用、多练、多配,你就能真正从入门到精通!

相关推荐
元Y亨H5 天前
华硕主机重装 Ubuntu 系统完全指南
ubuntu
字节逆旅6 天前
ubuntu应用深度守护
ubuntu
欧云服务器12 天前
怎么让脚本命令可以同时在centos、debian、ubuntu执行?
ubuntu·centos·debian
智渊AI12 天前
Ubuntu 20.04/22.04 下通过 NVM 安装 Node.js 22(LTS 稳定版)
ubuntu·node.js·vim
The️13 天前
Linux驱动开发之Read_Write函数
linux·运维·服务器·驱动开发·ubuntu·交互
硬汉嵌入式13 天前
Vim 9.2版本正式发布
编辑器·vim
再战300年13 天前
Samba在ubuntu上安装部署
linux·运维·ubuntu
qwfys20013 天前
How to install golang 1.26.0 to Ubuntu 24.04
ubuntu·golang·install
木尧大兄弟13 天前
Ubuntu 系统安装 OpenClaw 并接入飞书记录
linux·ubuntu·飞书·openclaw
小虾爬滑丫爬13 天前
ubuntu上设置Tomcat 开机启动
ubuntu·tomcat·开机启动