<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>编辑器 on blog</title><link>https://blog.waawo.space/tags/%E7%BC%96%E8%BE%91%E5%99%A8/</link><description>Recent content in 编辑器 on blog</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Sat, 20 Dec 2025 22:00:00 +0800</lastBuildDate><atom:link href="https://blog.waawo.space/tags/%E7%BC%96%E8%BE%91%E5%99%A8/index.xml" rel="self" type="application/rss+xml"/><item><title>Neovim 配置折腾记录</title><link>https://blog.waawo.space/posts/neovim-config/</link><pubDate>Sat, 20 Dec 2025 22:00:00 +0800</pubDate><guid>https://blog.waawo.space/posts/neovim-config/</guid><description>&lt;p&gt;用了好几年 Vim，去年开始切到 Neovim，体验好了不少。把配置思路记下来，省得下次重装又要从头找。&lt;/p&gt;
&lt;h2 id="为什么换-neovim"&gt;为什么换 Neovim&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;原生 Lua 配置，比 Vimscript 好写好读&lt;/li&gt;
&lt;li&gt;内置 LSP 支持，不需要装 coc.nvim 之类的大插件&lt;/li&gt;
&lt;li&gt;异步渲染，不卡&lt;/li&gt;
&lt;li&gt;社区活跃，插件生态比 Vim 好很多&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="配置目录结构"&gt;配置目录结构&lt;/h2&gt;
&lt;p&gt;Neovim 的配置放在 &lt;code&gt;~/.config/nvim/&lt;/code&gt;，我用的结构：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;~/.config/nvim/
├── init.lua # 入口文件
└── lua/
├── core/
│ ├── options.lua # 基础选项
│ ├── keymaps.lua # 快捷键
│ └── autocmds.lua # 自动命令
└── plugins/
├── init.lua # 插件列表（lazy.nvim）
├── lsp.lua # LSP 配置
├── treesitter.lua # 语法高亮
└── ...
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="包管理器lazynvim"&gt;包管理器：lazy.nvim&lt;/h2&gt;
&lt;p&gt;目前最好用的 Neovim 插件管理器，支持懒加载，启动速度快。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;init.lua&lt;/code&gt; 里引导安装：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-lua" data-lang="lua"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;local&lt;/span&gt; lazypath &lt;span style="color:#f92672"&gt;=&lt;/span&gt; vim.fn.stdpath(&lt;span style="color:#e6db74"&gt;&amp;#34;data&amp;#34;&lt;/span&gt;) &lt;span style="color:#f92672"&gt;..&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;/lazy/lazy.nvim&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#f92672"&gt;not&lt;/span&gt; vim.loop.fs_stat(lazypath) &lt;span style="color:#66d9ef"&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; vim.fn.system({
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;git&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;clone&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;--filter=blob:none&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;https://github.com/folke/lazy.nvim.git&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;--branch=stable&amp;#34;&lt;/span&gt;, lazypath,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; })
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;vim.opt.rtp:prepend(lazypath)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;require(&lt;span style="color:#e6db74"&gt;&amp;#34;lazy&amp;#34;&lt;/span&gt;).setup(&lt;span style="color:#e6db74"&gt;&amp;#34;plugins&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="基础选项"&gt;基础选项&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-lua" data-lang="lua"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;-- lua/core/options.lua&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;local&lt;/span&gt; opt &lt;span style="color:#f92672"&gt;=&lt;/span&gt; vim.opt
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;opt.number &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt; &lt;span style="color:#75715e"&gt;-- 显示行号&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;opt.relativenumber &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt; &lt;span style="color:#75715e"&gt;-- 相对行号&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;opt.tabstop &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;opt.shiftwidth &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;opt.expandtab &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;opt.smartindent &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;opt.wrap &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;false&lt;/span&gt; &lt;span style="color:#75715e"&gt;-- 不折行&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;opt.cursorline &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt; &lt;span style="color:#75715e"&gt;-- 高亮当前行&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;opt.termguicolors &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt; &lt;span style="color:#75715e"&gt;-- 真彩色&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;opt.signcolumn &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;yes&amp;#34;&lt;/span&gt; &lt;span style="color:#75715e"&gt;-- 始终显示符号列，避免跳动&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;opt.scrolloff &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;8&lt;/span&gt; &lt;span style="color:#75715e"&gt;-- 光标距顶/底保持 8 行&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;opt.clipboard &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;unnamedplus&amp;#34;&lt;/span&gt; &lt;span style="color:#75715e"&gt;-- 与系统剪贴板共享&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="常用插件"&gt;常用插件&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;插件&lt;/th&gt;
&lt;th&gt;用途&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;nvim-treesitter&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;语法高亮和代码结构解析&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;nvim-lspconfig&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;LSP 配置框架&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;nvim-cmp&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;自动补全&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;telescope.nvim&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;模糊搜索文件/内容&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;neo-tree.nvim&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;文件树&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;gitsigns.nvim&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Git 行内标记&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;lualine.nvim&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;状态栏&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;tokyonight.nvim&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;配色方案&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="lsp-配置"&gt;LSP 配置&lt;/h2&gt;
&lt;p&gt;先装语言服务器，以 Python 为例：&lt;/p&gt;</description></item></channel></rss>