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

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

相关推荐
一伦明悦დ11 小时前
jetson开发板Ubuntu系统Docker中使用 MySQL 数据库详解-安装与配置指南
数据库·mysql·ubuntu
柳鲲鹏12 小时前
UBUNTU之Onvif开源服务器onvif_srvd:1、编译
ubuntu·onvif
努力努力再努力@李13 小时前
利用本地电脑上的MobaXterm连接虚拟机上的Ubuntu
linux·运维·ubuntu
海梨花17 小时前
你的Redis是不是在家能用,到了学校就连不上?
数据库·redis·ubuntu·虚拟机
大白菜2015010519 小时前
ubuntu 创建系统服务 开机自启
linux·运维·ubuntu
风跟我说过她19 小时前
Ubuntu 服务器实战:Docker 部署 Nextcloud+ZeroTier,打造可远程访问的个人云
服务器·经验分享·ubuntu·docker
橙子小哥的代码世界21 小时前
【Docker】2025版Ubuntu 22.04 安装 Docker & Docker Compose 指南
linux·ubuntu·docker·微服务·容器编排·docker engine·docker compose
就叫飞六吧1 天前
企业级主流日志系统架构对比ELKK Stack -Grafana Stack
后端·ubuntu·系统架构
币圈小菜鸟1 天前
Selenium 自动化测试实战:绕过登录直接获取 Cookie
linux·python·selenium·测试工具·ubuntu·自动化
学c语言的枫子1 天前
Ubuntu22.04网络图标消失问题
linux·学习·ubuntu