首先,几个月前我在 YouTube 频道上发布了一个关于此内容的视频,但我计划在这里进行更深入的介绍。其次,这不是一篇“如何做”的文章——我将向您展示我使用的工具以及使用它们的原因,但不会具体介绍如何设置它们。网上有很多这方面的文档!
嘿!你好!如果你不喜欢阅读这么长的文章,你可以在这里观看视频:
此设置需要做什么 ️
那么我希望从我的笔记设置中获得什么?一般来说,我需要能够快速编辑和查看 markdown 和 LaTeX 文件,以及在文件类型之间进行转换。
你可能会问,我为什么要改变我的笔记设置?好吧,我使用 Obsidian 已经有一段时间了,但它感觉笨重而缓慢(可能是因为它是另一个基于 Electron 的程序,ew),它不能让我像我希望的那样高效地工作。
例如,Obsidian 中的搜索功能有时会……出错?例如,在 Neovim 中使用 ripgrep 在我的笔记中搜索“token”会得到 7 个结果,但使用 Obsidian 中的搜索功能会得到……8 个结果?即使只显示了 7 个结果。它也有点慢。
现在我们知道了为什么要更改我的笔记设置……但它需要做什么?这是一个非常广泛的问题,我已经回答过了,所以让我们试着缩小一点。它需要查看 Markdown 和 LaTeX 文件(另外 LaTeX 可以编译为 PDF,所以我们还需要一个 PDF 查看器),正如我提到的,我一直在 Obsidian 中做笔记,它以 Markdown 格式记笔记。因此,因为我想用 LaTeX 记数学笔记,所以我需要能够在 Markdown -> LaTeX -> PDF 和 LaTeX -> Markdown 之间转换。这些转换可能看起来有点奇怪,但我保证,在这篇文章的最后,一切都会变得有意义!
我还需要非常快速地编辑 Markdown 和 LaTeX 文件。Obsidian 给我最大的问题之一就是它非常慢,所以我想彻底解决这个问题。以下是我用来解决这个问题的方法:
Vim 动作
片段
模糊查找器
比 netrw(我非常喜欢的 Neovim 内置文件管理器)更好的文件管理器可能会不错。
拼写检查器
一体化终端
让我们来谈谈具体细节。
查看 Markdown 和 LaTeX 文件
…首先查看 Markdown 和 LaTeX 文件。Neovim 当然可以打开 Markdown 和 LaTeX 文件,但如果它们看起来更好一些就更好了。以下是我们将要使用的内容:
Treesitter 用于语法高亮显示。99%的配置已经有了这个功能,我只是觉得我应该提一下。
require("lazy").setup({
spec = {
{
"nvim-treesitter/nvim-treesitter",
},
}
})
Image.nvim 用于在终端中查看图像。这有多酷?虽然您确实需要使用 Kitty 终端,但有时它有点……愚蠢。我们还需要获取这些图像的文件路径,我必须设置一个函数来返回 image.nvim 的正确文件路径。我知道我说过这不是一个教程,但我觉得这一点很重要。
require("lazy").setup({
spec = {
{
"3rd/image.nvim",
},
}
})
Markview for Markdown。这让 Markdown 看起来好多了。此外,我最近了解到这个插件几乎完全是在手机上开发的。你可以在这里阅读更多相关信息。
require("lazy").setup(
{
spec = {
{
"OXY2DEV/markview.nvim",
lazy = false,
dependencies = {
"nvim-treesitter/nvim-treesitter",
"nvim-tree/nvim-web-devicons"
}
}
}
}
)
Vimtex for LaTeX。VimTex 在很多方面都非常有用,不仅仅是查看 LaTeX 文件。不过我们稍后会讲到。VimTex 提供可选的语法高亮功能——尽管我们已经有 treesitter 来实现这一点。为了正确查看 LaTeX 文件,我确实需要查看 LaTeX 的渲染输出——PDF(稍后会详细介绍),所以我需要一个 PDF 查看器。我可以使用 Firefox,但我想使用更专用的浏览器。因此,对于我的 PDF 查看器,我选择了 Zathura。它没什么特别的——它支持 Vim 绑定,而且……是的,它可以查看 PDF。
require("lazy").setup(
{
spec = {
{
"lervag/vimtex",
lazy = false, -- we don't want to lazy load VimTeX
-- tag = "v2.15", -- uncomment to pin to a specific release
init = function()
-- VimTeX configuration goes here, e.g.
vim.g.vimtex_view_method = "zathura"
vim.g.vimtex_view_forward_search_on_start = false
vim.g.vimtex_compiler_latexmk = {
aux_dir = "/home/oscar/.texfiles/",
out_dir = "/home/oscar/.texfiles/"
}
end
}
}
}
)
不同文件类型之间的转换 ↔️
正如我之前提到的,我最初在 Obsidian 中记下了所有笔记,它以 Markdown 格式记笔记。但是,我想用 LaTeX 记下数学笔记,用 Markdown 记下所有其他内容,所以我想将所有数学 Markdown 笔记转换为 LaTeX。在进一步讨论之前,我想提一下,您可以使用名为 pandoc 的工具完成所有这些操作。
我本来要编写一个脚本,将我的 Maths 文件夹中的所有 Markdown 文件转换为 LaTeX,但是我不擅长使用 bash,因此我决定使用以下命令即时转换它们:
pandoc -f markdown -t latex -s myfile.md -o myfile.tex
我应该指出,pandoc 确实在 LaTeX 中生成了大量标题(约 40 行)。但这不会影响文件的外观。此外,如果您想在 LaTeX 文件中包含图像,则需要使用 graphicx 包并为其指定文件路径,如下所示:
\usepackage{graphicx}
\graphicspath{ {/home/oscar/obsidian-notes/Images/} }
接下来,我确实提到过我可能想要从 LaTeX 转换回 Markdown。这是因为我大约有 10% 的时间使用 Windows,而且我没有专门为 Windows 构建的 LaTeX 查看器。因此,如果我需要在 Windows 上记笔记,我希望能够在不使用 OverLeaf 等在线编辑器的情况下这样做。
这样我们就可以在 Markdown 和 LaTeX 之间进行转换了(反之亦然)。那么 LaTeX 转 PDF 怎么样?好吧,这就是 Vimtex 真正出彩的地方。您只需告诉它您要使用哪个 PDF 查看器,点击“\ll”,然后等待大约一秒钟即可呈现。
但是,您需要为此过程配置或安装的东西数量有点多。以下是我脑海中浮现的列表 — 可能还有更多:
latexmk - Vimtex 用来将 LaTeX 文件编译为 PDFS 的工具,禁用 Zathura 中的默认正向搜索 - 如果不禁用此功能,您将看到一堆绿色高亮 - 有点烦人
Zathura 本身 - 这个配置非常简单,我只是觉得它没有很好的文档记录
latexmk 的输出目录,这样您就不会在目录中看到几十个随机文件。
非常快速地编辑 Markdown 和 LaTeX 文件✏️
最后,编辑 Markdown 和 LaTeX 文件的速度非常快。关于 Markdown 没什么好说的。我有几个小的按键绑定供一般使用,但归根结底……它只是 Markdown。没什么特别的。
相反,VimTex 对 LaTeX 非常有用。它带有一堆超级有用的默认动作。另外,我认为我应该在这里提到代码片段。代码片段不是用 VimTex 本身完成的,而是用 LuaSnip 插件完成的。这里没有什么特别花哨的东西,但我将向您展示一个小代码片段。
ls.add_snippets("tex", {
s(
"basetext",
fmt(
[[
\documentclass{{article}}
\usepackage{{graphicx}}
\begin{{document}}
\end{{document}}
]],
{}
)
),
})
这只是使 LaTeX 的一些比较单调的部分变得更快一些。
接下来是模糊查找器。大多数 Neovim 用户已经安装了它,但我觉得我应该提一下,因为它是我工作流程的核心部分。如果你不使用它,它只是让你在文件之间快速移动。
之后,我想添加一个更好的文件管理器。虽然我还没有在 Neovim 中配置它,但我使用 n^3 作为我的文件浏览器。Neovim 的默认浏览器是 netrw,虽然我很喜欢它,但它效率不高。由于我经常在文件之间跳转(有或没有模糊查找器),所以一个更好的文件浏览器对我来说非常重要。
此列表中倒数第二项……拼写检查器!它已内置于 Neovim 中,使用和启用起来非常简单。我不得不将其设置为在任何打开的终端上自动关闭(因为我不需要我的终端进行拼写检查——英语词典中肯定没有 fdisk 这个单词)。
最后,还有一个集成终端。Neovim 已经提供了一个内置终端,但 ToggleTerm 插件允许我们快速打开和关闭它,这很好。我的按键绑定只是“te”(我的主键是空格键)。
关于人工智能
哦,顺便说一句,我肯定有人会问我是否使用过人工智能。所以,说实话,我真的不喜欢人工智能。不过,我发现一个非常好的用例是截取数学内容的屏幕截图,并使用 ChatGPT 将其转换为 LaTeX。我通常“手写”LaTeX,但在某些情况下,我不得不问自己:“我到底能从中得到什么?”。
类似上述情况的一个例子...
总结一下…
就这样!通过此设置,我可以在 Neovim 中查看 Markdown 和 LaTeX 文件,轻松编辑它们,并使用 pandoc 在文件类型之间转换。

