从零到精通 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 组合,成为写代码的利器。

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

相关推荐
kebeiovo15 小时前
Linux 虚拟机磁盘空间占满-全面清理方案
linux·ubuntu
NKelly16 小时前
原生Vim操作大全
linux·编辑器·vim
飘飘燃雪16 小时前
在 Linux 系统上安装 Docker 的步骤如下(以 Ubuntu/Debian为例)
linux·ubuntu·docker·debian
玖剹17 小时前
深入解析Linux信号处理机制
linux·运维·服务器·网络·c++·ubuntu
guidovans1 天前
node.js 零基础入门
node.js·编辑器·vim
EasyCVR1 天前
视频汇聚系统EasyCVR调用设备录像保活时视频流不连贯问题解决方案
数据库·ubuntu·音视频·云存储·云端录像
zhangxiaomm1 天前
Ubuntu 搭建 yolov5
linux·yolo·ubuntu
通信小小昕1 天前
Ubuntu22.04 安装vitis2023.2 卡在“Generating installed device list“.
ubuntu·vivado·vitis
xsc-xyc1 天前
虚拟机Ubuntu重启发现找不到共享文件夹
服务器·ubuntu