跳转至

青冥上河图

题记

与海珀蓝不同,NeoVim 不太好找到一个比较好的中文翻译。我能想到的一个比较拙劣的叫“青冥”,虽然不是特别有道理,除了第一个字的字义“青春”和第二个字的音 /miŋ/ 可以勉强对应上(如果认为 /ŋ/ 可以近似 /m/ 而且 /m/ 可以近似普通话中不存在的 /v/ 的话);由于 NeoVim 的 Logo 是青蓝色的,这个翻译也算是有点道理吧。

很巧不巧的是,《梦游天姥吟留别》里“青冥浩荡不见底”的句子,倒是挺贴切 NeoVim 这个“浩瀚无边”的编辑器;乘上 Vim 的长风,我也将成为“霓为衣兮风为马”的“神人”。

我现在使用的是 LazyVim,它是一个比较流行的 NeoVim 配置框架,基于 lazy.nvim 插件管理器。我的 NeoVim 也是在它的基础上配置了。简单的配置我就不再赘述了。

关于 NeoVim 的杂谈

NeoVim 适合什么样的编程场景呢?

  • NeoVim 适合大部分文字由自己编写的场景,比如传统的代码编写、文档编写;
  • 个人觉得 NeoVim 不太适合 Vibe Coding,主要 AI 完成的代码还是用 VS Code, Cursor 之类的编辑器比较合适;(没用过 Codex,有没有人送我?)
  • Vim 类编辑器具有很强的 navigation 能力;

总纲

下面列举一些我最近想完成的事情(最近的含义可能指寒假了,因为期末周还是有更重要的事情要做):

  • 在部分目录中排除 Copilot 的使用,比如比较敏感或者不需要 Copilot 的内容
  • 在 Normal 模式下 fcitx 永远使用英文输入法,而在 Insert 模式下保存上一次使用的输入法状态; 可以很方便地使用 keaising/im-select.nvim 这个插件解决;
  • 自己部署 Hakatime 代替 Wakatime 的时间统计;
  • 把中文换行问题解决掉(已经基本解决了,不过是以牺牲英语正确换行为代价的,不过影响不大;
  • 在 NeoVim 中渲染 MkDocs Material 风格的扩展语法,比如 Admonition(这一点需要写 custom handler,难度较大);
  • 复习一下 Vim 的基本快捷键和使用方法,免得陷入一种“模式崩溃”;
  • 学习一下 Lua 和基本的 NeoVim 插件编写方法;

在部分目录中排除 Copilot

众所周知,nvim 具有强大的可拓展性,nvim 的插件一般都相当简洁,不会提供冗杂的各种配置参数。

这其实是 copilot.nvim 一个远古的 Issue,提出者还是有名的 ouuan。现在,这个问题可以通过配置 zbirenbaum/copilot 中的 should_attach 函数解决。

这体现了 nvim 的配置比 VS Code 配置强大的地方:VS Code 的 config.json 只有静态配置,而 nvim 的配置甚至可以是动态执行的代码!

{
  "zbirenbaum/copilot.lua",
  optional = true,
  opts = {
    should_attach = function(bufnr)
      local filepath = vim.api.nvim_buf_get_name(bufnr)
      -- Disabled directories
      local disabled_dirs = {
        vim.fn.expand("$HOME/repo/notes/日志"),
      }
      for _, dir in ipairs(disabled_dirs) do
        if filepath:find(dir) == 1 then
          return false
        end
      end
      return true
    end,
  },
},

评论