2023年圣诞特辑:(n)vim插件:vim-markdown

我是Markdown (opens new window)的超级粉丝。使用文本符号提供上下文信息的方式非常优雅。我用它来做笔记,创建RSS内容,制作博客,甚至在电子邮件中使用(我非常希望能在Outlook网页版和GMail中转换Markdown的方式!)

所以,毫无疑问,我使用各种工具来帮助我在(n)vim中编写Markdown。

有哪些工具? #

aareman/vim-markdown (opens new window)插件提供核心功能和语法高亮。在支持的终端中,您实际上可以看到加粗、斜体或下划线的文本。标题、链接和等宽文本都有不同的颜色,有时还有不同的加粗程度。

此外,我还有许多其他插件来增强vim-markdown的功能:

  • vim-table-mode (opens new window)提供了对文本表格的即时自动格式化功能,包括Markdown中的表格。这非常宝贵,因为它允许我在输入时查看我是否缺少列、添加额外列等。
  • img-paste.vim (opens new window)允许将屏幕截图粘贴到Markdown文档中。它将复制截图到指定的相对目录,然后创建显示在文档中的标记。
  • vim-pandoc-syntax (opens new window)在语法高亮方面做了大部分繁重的工作,特别是对于围栏代码块。如果您使用Github Flavored Markdown (opens new window),您可以在创建围栏代码块时选择指定一种语言;vim-pandoc-syntax将识别语言,并用它来为给定语言的代码块提供语法高亮。

另外,与coc.nvim (opens new window)一起,我获得了与markdownlint (opens new window)的集成,这会标记潜在的语法和风格问题。

我如何配置它 #

我使用以下配置vim-markdown:

let g:markdown_disable_folding            = 1
let g:markdown_disable_motions            = 0
let g:markdown_disable_spell_checking     = 0
let g:markdown_disable_conceal            = 0
let g:markdown_disable_table_mode         = 0
let g:markdown_disable_pandoc_integration = 0
let g:markdown_disable_clean_empty_on_cr  = 0

nnoremap <buffer> <Leader>x :call markdown#SwitchStatus()<CR>

这些配置如下:

  • 我很少使用代码折叠,而且即使使用,我也希望手动操作。因此,我禁用了插件自动折叠。
  • vim-markdown提供了各种运动功能,让您可以更快地在Markdown文档中跳转,特别是到上一个标题([[)或下一个标题(]])。我希望保留这些功能。
  • 拼写检查很不错。
  • "conceal"会在您不在一行上时隐藏标记符号;终端会继续适当地突出显示它们(例如加粗、斜体、下划线等)。链接被折叠成仅显示高亮的链接文本,将周围内容折叠起来。这样做使得_阅读_文档更容易;当您在该行上时,它将显示所有隐藏的字符,以便您进行编辑。
  • 表格模式启用与vim-table-mode的集成;我肯定想要这个功能。
  • Pandoc集成启用了pandoc语法高亮;我肯定想要这个功能。
  • 如果我从列表项中按Enter键,它将创建一个新的列表项。最后这个设置意味着我可以再次按Enter键,它将清除列表项并在下面开始一行。这是结束列表并开始输入下一个段落的简便方法。
  • 我经常在TODO列表中使用GFM复选框。映射声明将<Leader>x映射到切换复选框。
最后的想法 #

vim-surround (opens new window)coc.nvim (opens new window)之后,毫无疑问,这无疑是给我带来最大价值的插件。我在_撰写这篇博客文章时受益_!虽然GUI IDE可以提供并排编辑,让您可以看到Markdown是如何转换的,但我很少需要那个;Markdown的整个目的是提供一种_人类可读_的格式,提供_上下文标记_。阅读原始文件应该足够了。

vim-markdown使我能够拥有一个原始的Markdown文件,同时为我提供了足够的视觉上下文,使我即使在快速浏览文档时也能理解事物。