1749 字
9 分钟
-
-
类 vi 编辑器
2026-05-08
2026-05-16

关系#

  1. vi 一般是Linux自带的,带有可以在命令行中运行
  2. vimvi的基础上,可在命令行中运行,在vi的基础上更加美观
  3. neovimvim 的基础上,拥有界面,更加美观花里胡哨,可媲美 VScode

基本的语法(键位)#

命令用途
:w保存
:q退出
! 如:q!就是强制退出,不保存强制
d 若不使用p粘贴就是删除剪切/删除
y复制
p粘贴
i进入批注模式
v进入复制模式
esc返回正常模式
gf进入
s写法:s {被替换的字符}/{需要替换的字符}支持正则表达式替换

vim#

NeoVim#

  • NeoVim官网:网站编辑器

安装 LazyVim框架#

  • LazyVim 是目前最受欢迎的 Neovim 配置框架(基于 lazy.nvim),开箱即有 IDE 级功能,启动极快
  • 官网:网站
  • Github 开源地址:网站
  • 学习资源
    • :help + :Lazy + :Mason 是最好的老师。
    • YouTube 搜索 “LazyVim 2026” 或 “Neovim note taking” 有很多最新视频。
    • 中文社区:Reddit r/neovim、B站搜索 “Neovim 配置”。

安装步骤#

备份旧配置(重要!)#
  • 备份原有 Neovim 配置
    • mv ~/.config/nvim ~/.config/nvim.bak
    • mv ~/.local/share/nvim ~/.local/share/nvim.bak
  • 可选但推荐
    • mv ~/.local/state/nvim ~/.local/state/nvim.bak
    • mv ~/.cache/nvim ~/.cache/nvim.bak
克隆 LazyVim 启动模板#
  • 终端输入:git clone https://github.com/LazyVim/starter ~/.config/nvim
安装后的目录结构#
  • ~/.config/nvim/
├── lua/
│ ├── config/
│ │ ├── autocmds.lua # 自动命令
│ │ ├── keymaps.lua # 快捷键设置
│ │ ├── lazy.lua # 懒加载配置
│ │ └── options.lua # 编辑器选项
│ └── plugins/ # 自定义插件目录
│ └── example.lua
└── init.lua # 入口文件
移除 .git 文件夹#
  • 终端输入:rm -rf ~/.config/nvim/.git
    • 方便托管自己的配置到个人仓库中
启动 Neovim#
  • 终端输入:nvim
  • 首次启动时,LazyVim 会自动下载并安装所有默认插件,请耐心等待 2-5 分钟到结束。
  • 如果有插件安装错误:见 [[类 vi 编辑器(以 NeoVim 为例)#插件安装失败]]

安装插件(使用LazyVim框架 )#

  • ~/.config/nvim/lua/plugins/ 目录下新建 .lua 文件:
推荐额外插件#
return {
-- 笔记渲染
{ "MeanderingProgrammer/render-markdown.nvim", opts = {} },
-- Obsidian 支持
return {
{
"epwalsh/obsidian.nvim",
version = "*", -- 稳定版
lazy = true,
event = {
"BufReadPre " .. vim.fn.expand("~/文档/笔记/gtlx-md") .. "/**/*.md",
"BufNewFile " .. vim.fn.expand("~/文档/笔记/gtlx-md") .. "/**/*.md",
},
dependencies = { "nvim-lua/plenary.nvim" },
opts = {
workspaces = {
{
name = "notes",
path = "~/文档/笔记/gtlx-md",
},
},
completion = {
nvim_cmp = false, -- ← 关键修改!因为你用的是 blink.cmp
min_chars = 2,
},
mappings = {
["gf"] = {
action = function()
return require("obsidian").util.gf_passthrough()
end,
opts = { noremap = false, expr = true, buffer = true },
},
["<CR>"] = {
action = function()
return require("obsidian").util.smart_action()
end,
opts = { buffer = true, expr = true },
},
},
daily_notes = {
folder = "Daily",
},
},
},
}
-- 其他好用的
"tpope/vim-fugitive", -- Git 命令
"folke/trouble.nvim", -- 诊断列表
"nvim-neotest/neotest", -- 测试运行器
}
编程插件:#

从 VSCode 转过来建议:先用 LazyVim 跑 1-2 周熟悉基本操作,再逐步自定义。初期可能觉得慢,但掌握 Vim 键位(hjkl、w b 等)和插件后,效率会大幅提升。

  • nvim-treesitter/nvim-treesitter-textobjects:更强的代码块操作。
  • mfussenegger/nvim-dap + 对应语言适配器。
  • lewis6991/gitsigns.nvim
  • AI 插件:yetone/avante.nvimgithub/copilot.vim 等。
其他笔记插件#
  • nvim-neorg/neorg:类似 Org-mode 的结构化笔记(适合重度组织者)。
  • zk.nvimtelekasten.nvim:Zettelkasten 方法。
  • image.nvim:终端内显示图片(需 kitty/wezterm 等终端)。
做笔记(Markdown / Zettelkasten / Obsidian 风格)#

Neovim 在纯文本笔记上非常强大,尤其适合程序员。

推荐方案

  1. 最简单强大:LazyVim 的 Markdown Extra + Marksman LSP

    • :LazyExtras 启用 lang.markdown
    • 安装 Marksman(Markdown LSP):提供链接补全、跳转、查找引用、重命名等,完美支持 Wiki 链接 [[Note]]
    • 插件:render-markdown.nvim(漂亮的 Markdown 渲染)、markdown-preview.nvim(浏览器预览)、vim-markdown 或 Treesitter。
  2. Obsidian 用户:obsidian.nvim

    • 插件:epwalsh/obsidian.nvim
    • 支持每日笔记(:ObsidianToday)、模板、图片粘贴、快速切换、链接管理等。
    • 可以和 Obsidian App 共用 vault(手机端用 App,电脑端用 nvim)。

实用配置示例(Markdown 文件类型设置):

~/.config/nvim/ftplugin/markdown.lua 中:

vim.opt.wrap = true
vim.opt.linebreak = true
vim.opt.conceallevel = 2 -- 隐藏 Markdown 标记,阅读更舒服

使用#

  • 安装完后,用 :LazyExtras 命令启用需要的扩展(非常方便)。
  • LazyVim 默认已包含很多插件:(可以部分替代 VSCode 的核心功能)
    • LSP、补全、格式化、Lintmason.nvim + nvim-lspconfig + blink.cmp(或 nvim-cmp)+ conform.nvim 等。
    • Treesitter:优秀语法高亮和代码结构。
    • Telescope / fzf-lua:模糊查找文件、符号、grep(比 VSCode 的 Command Palette 还强)。
    • 调试nvim-dap(支持多种语言)。
    • Gitgitsignslazygitneogit
启用语言支持#
  • ~/.config/nvim/lua/plugins/ 下新建文件:
  • Python、Rust、Go、TypeScript、Java 等:
    • :LazyExtras 搜索对应 lang.* 启用。
  • 示例启用 Python 和 Markdown:
    • lua/config/lazy.luaplugins 文件中添加:
return {
{ import = "lazyvim.plugins.extras.lang.python" },
{ import = "lazyvim.plugins.extras.lang.markdown" },
设置中文:#
whichkey.lua#
  • 文件路径nvim ~/.config/nvim/lua/plugins/whichkey.lua
-- ~/.config/nvim/lua/plugins/whichkey.lua
return {
{
"folke/which-key.nvim",
opts = {
spec = {
-- ==================== 顶级分组 ====================
{ "<leader>f", group = "🔍 文件" },
{ "<leader>s", group = "🔎 搜索" },
{ "<leader>w", group = "🪟 窗口" },
{ "<leader>b", group = "📑 Buffer" },
{ "<leader>g", group = "🌿 Git" },
{ "<leader>l", group = "⚡ LSP" },
{ "<leader>d", group = "🐛 调试" },
{ "<leader>t", group = "🧪 测试" },
{ "<leader>q", group = "❌ 会话/退出" },
{ "<leader>o", group = "📝 Obsidian" },
{ "<leader>n", group = "📓 笔记" },
{ "<leader>u", group = "🔧 UI/界面" },
{ "<leader>x", group = "🔧 诊断" },
-- ==================== 子分组 ====================
-- 文件
{ "<leader>ff", desc = "查找文件" },
{ "<leader>fg", desc = "全文搜索 (Live Grep)" },
{ "<leader>fr", desc = "最近打开的文件" },
{ "<leader>fb", desc = "浏览 Buffer" },
-- 窗口
{ "<leader>wd", desc = "关闭当前窗口" },
{ "<leader>wo", desc = "只保留当前窗口" },
{ "<leader>ws", desc = "水平分栏" },
{ "<leader>wv", desc = "垂直分栏" },
{ "<leader>w=", desc = "窗口等大" },
-- Obsidian
{ "<leader>ob", desc = "反向链接 (Backlinks)" },
{ "<leader>ot", desc = "今日笔记" },
{ "<leader>oq", desc = "快速切换笔记" },
{ "<leader>os", desc = "搜索笔记内容" },
{ "<leader>on", desc = "新建笔记" },
{ "<leader>op", desc = "粘贴图片" },
},
},
},
}
keymaps.lua#
  • 文件路径:nvim ~/.config/nvim/lua/config/keymaps.lua
-- ~/.config/nvim/lua/config/keymaps.lua
local map = vim.keymap.set
-- Obsidian 快捷键
map("n", "<leader>ob", "<cmd>ObsidianBacklinks<cr>", { desc = "反向链接" })
map("n", "<leader>ot", "<cmd>ObsidianToday<cr>", { desc = "今日笔记" })
map("n", "<leader>oq", "<cmd>ObsidianQuickSwitch<cr>", { desc = "快速切换笔记" })
map("n", "<leader>os", "<cmd>ObsidianSearch<cr>", { desc = "搜索笔记内容" })
map("n", "<leader>on", "<cmd>ObsidianNew<cr>", { desc = "新建笔记" })
-- 窗口操作
map("n", "<leader>ws", "<C-w>s", { desc = "水平分栏" })
map("n", "<leader>wv", "<C-w>v", { desc = "垂直分栏" })
map("n", "<leader>wd", "<C-w>c", { desc = "关闭当前窗口" })
map("n", "<leader>wo", "<C-w>o", { desc = "只保留当前窗口" })
实用技巧 & 工作流#
  • 快捷键:LazyVim 默认很多 <leader> 键(空格),如 <leader>ff 找文件、gd 跳转定义、K 显示悬浮文档。
  • 终端集成:用 WezTerm / Kitty + Tmux,nvim 里用 :terminaltoggleterm.nvim
  • 多语言:一个 vault 放笔记,项目目录直接打开 nvim 写代码。
  • 同步:笔记用 Git + GitHub,或 Syncthing。
  • 手机端:Obsidian App + Git 同步,或 Termux + nvim(进阶)。
  • 性能:Neovim 通常比 VSCode 轻很多,适合老电脑或远程 SSH。

其他#

常见问题解决#
插件安装失败#
  • 清除缓存后重试
    • rm -rf ~/.cache/nvim
    • rm -rf ~/.local/share/nvim/lazy
    • rm -rf ~/.local/stare/nvim/lazy
    • 启动:nvim
  • 然后在 Neovim 中执行 :update
    • 查找更新
如何重置配置#
Terminal window
# 备份自定义配置
cp -r ~/.config/nvim/lua/custom ~/nvim-custom-backup
# 重新安装
rm -rf ~/.config/nvim
git clone https://github.com/LazyVim/starter ~/.config/nvim
# 恢复自定义配置
cp -r ~/nvim-custom-backup ~/.config/nvim/lua/custom
类 vi 编辑器
https://gtlx.ltd/posts/终端软件/类vi编辑器/
作者
GTLX
发布于
2026-05-08
许可协议
CC BY-NC-SA 4.0