如何让 Vim 理解 *.md 文件包含 Markdown 代码,而不是 Modula-2 代码? [复制]

2024-04-04

当我在 Vim 中编辑包含 Markdown 代码的 README.md 并执行时:set filetype?命令,我明白了filetype=markdown。 Markdown 语法正确突出显示。

但是当我在 Vim 中编辑包含 Markdown 代码的 foo.md 并执行时:set filetype?命令,我明白了filetype=modula2。 Markdown 语法未正确突出显示。

我应该在 ~/.vimrc 中添加什么以使 Vim 理解 foo.md 或任何扩展名为 .md 的文件是 markdown 文件而不是 modula2 文件?


问题原因

为了了解哪个脚本设置了此文件类型,我在编辑 foo.md 后执行了以下命令。

:verbose set filetype?

我发现以下输出。

  filetype=modula2
        Last set from /usr/share/vim/vim74/filetype.vim

在 /usr/share/vim/vim74/filetype.vim 中,我找到了以下几行。

au BufNewFile,BufRead *.markdown,*.mdown,*.mkd,*.mkdn,*.mdwn,README.md  setf markdown
au BufNewFile,BufRead *.m2,*.DEF,*.MOD,*.md,*.mi setf modula2

这些行显示,当编辑 README.md 时,文件类型设置为markdown但在编辑扩展名为 .md 的任何其他文件时,文件类型设置为modula2。换句话说,*.md 文件被识别为 Modula-2 源代码,但 README.md 例外,它被识别为 Markdown 代码,这可能是由于 README.md 文件在 GitHub 上越来越受欢迎。

Solution

在 ~/.vimrc 中添加以下语句即可set filetype=markdown对于所有 .md 文件。

autocmd BufNewFile,BufRead *.md set filetype=markdown

该语句表示当开始编辑一个不存在的新文件或开始编辑一个新缓冲区时,将文件读入缓冲区后,如果文件与模式匹配*.md then set filetype=markdown.

Update

在我现在的 Vim 更新版本中,我发现这个问题不再存在。

$ vim --version | head -n 2
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Mar 31 2015 23:36:07)
Included patches: 1-488, 576
$ grep -E "markdown|modula2" /usr/share/vim/vim74/filetype.vim 
au BufNewFile,BufRead *.markdown,*.mdown,*.mkd,*.mkdn,*.mdwn,*.md  setf markdown
au BufNewFile,BufRead *.m2,*.DEF,*.MOD,*.mi     setf modula2

补丁位于ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.860 ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.860似乎已经做出了这个改变。然而,我有点困惑的是,补丁 860 中似乎可用的这些更改如何在我的 Vim 版本中可用,其中仅包含补丁 1-448、576。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何让 Vim 理解 *.md 文件包含 Markdown 代码,而不是 Modula-2 代码? [复制] 的相关文章

  • 如何在 vim 中覆盖 ~/.vim 和 ~/.vimrc 路径(但不能覆盖其他路径)?

    假设我有一个所有 vim 配置的 tarball 通常在 vim 中的所有内容 插件 自动加载 颜色 所有这些东西 和一个 vimrc 文件 我将其提取到某个目录中 所以在我所在的目录 PWD 中 有一个 vim 文件夹和一个 vimrc
  • 在 Vim 中平滑滚动的最佳方法是什么?

    Vim 中的主要滚动命令是 Ctrl B and Ctrl F as well as PageUp and PageDown scroll by full page Ctrl U and Ctrl D scroll half a page
  • 如何让 vim 很好地对齐三元 ?: 运算符?

    我喜欢使用三元 运算符编写代码 如下所示 std string result input empty createNewItem processInput input 我如何配置vim 以便在输入后按回车键createNewItem 缩进下
  • vim 的 @@ 变量是什么?

    我知道通过输入 我执行最后一个 命令 但谁能解释一下什么 是在下面的代码中 在 vim 帮助文件中找到 function CountSpaces type let sel save selection let reg save if a 0
  • VIM:可用的快捷方式?

    我在 vim 中使用了许多快捷方式 其他快捷方式由插件使用 有时我想为新命令添加快捷方式 但事后请注意该快捷方式已被使用 有没有办法查看 VIM 中所有可用快捷键的列表 所有 ctrl shift alt 快捷键 Type help ind
  • gvim中的鼠标输入

    标准鼠标输入可以在 vim 中自定义吗 在我的例子中是 vim 插件也是可以接受的选择 我特别感兴趣的是 覆盖 双击某个单词 这样 gvim 就不仅仅是突出显示该单词 而是进行搜索 从而突出显示文件中该单词的所有实例 我在其他编辑器中看到过
  • 如何使用 system() 函数的第二个参数(输入)

    vim 的文档system函数对第二个参数是这样说的 当给出 input 时 该字符串将写入文件并作为标准输入传递给命令 我从中了解到的是 如果你system通话看起来像这样 call system node something js fi
  • 强制 vim 覆盖外部更改

    我使用 Vim 7 4 Mac OS 编辑和运行 Lua 脚本 我已经在 vimrc 中映射了一个键来保存当前缓冲区并运行外部脚本 vimrc 中的按键映射 map V w
  • Vim ":source %" 命令导致错误 (E499)

    Stack Overflow vim 用户大家好 我最近发现自己花了相当多的时间在学校的计算机科学实验室编写代码 我在无数的linux系统上配置过vim 从来没有遇到过这个错误 E499 Empty file name for or onl
  • VIM语法折叠:禁用折叠多行注释

    我在 vim 7 3 中使用 语法 折叠方法 在 vimrc中 set foldmethod syntax 当我打开 Test cpp 时 包含 A function with a multi line comment This takes
  • 通过列表字符仅显示前导空格的“空格”字符

    Vim 中是否可以有我的编辑器 编辑时 c and h文件 显示通过listchars 一个特殊字符 仅用于leading空格字符 我发现一个单独的帖子指出 从版本 7 4 开始 Vim 现在支持通过以下方式突出显示所有空格字符listch
  • 如何中断一个花费太多时间的 Vim 命令?

    有时 Vim 命令需要花费太多时间来执行 典型示例 gf通过网络发送具有巨大路径的命令 最多可能需要 30 秒才能结束 我想在执行过程中中断它 有没有办法取消命令执行并返回到正常模式 无需杀死 Vim 并重新启动 您可以中断它发送 SIGI
  • 如何从 Bash 命令行在后台 Vim 打开另一个文件?

    我正在从使用 Gvim 过渡到使用控制台 Vim 我在 Vim 中打开一个文件 然后暂停 Vim 在命令行上运行一些命令 然后想返回到 Vim Ctrl Z 在正常模式下 暂停 Vim 并返回到控制台 fg可用于将焦点返回到 Vim job
  • 如何设置 Vim 进行 Android 开发?

    谁能描述一下用于 Android 开发的良好 Vim 设置吗 我现在使用 Eclipse 但我真的很想使用 Vim 因为它更快 而且我更喜欢它 例如 我对 Eclim 不感兴趣 我对使用哪些 Vim 插件 用于 Java 自动完成等 如何
  • GVIM可以有背景图片吗?

    我想知道是否可以将背景图像放入 gVim 中 这可以通过编程来完成吗 如果你必须的话 我建议你做以下几件事 使用合成窗口管理器 例如 Linux Windows Vista 和 Mac OS 上的 Compiz 可能有类似的工具 设置桌面背
  • VIM:使用 :normal 命令退出插入模式

    当我使用 normal 命令进入插入模式时 normal i 例如 如何退出插入模式 如果我按 或 VIM 会退出命令模式 并且我无法运行 normal 命令 I put imap
  • 如何使用 vim 作为“git show”编辑器?

    全部如所述如何使用 vim 作为 git log 编辑器 https stackoverflow com questions 16666009 how do i use vim as git log editor不适用于 git show
  • 如何将可视选择的文本通过管道传输到 UNIX 命令并将输出附加到 Vim 中的当前缓冲区

    使用 Vim 我尝试将在可视模式下选择的文本通过管道传输到 UNIX 命令 并将输出附加到当前文件的末尾 例如 假设我们有一个 SQL 命令 例如 SELECT FROM mytable 我想做如下的事情
  • 如何成功使用 VIM 作为 Code::Blocks 的外部编辑器?

    我真的很喜欢 Code Blocks 的构建系统和单步调试能力 也就是说 我真的很喜欢使用 gcc gdb 的包装器 而不是从 Makefile 或命令行使用它们 问题是 多年来使用 VIM 使我的大脑受到了严重损伤 或者有些人可能会说被宠
  • Vim 在 Mingw 上表现异常

    我在 MinGW 4 6 2 上的 Vim 表现得很奇怪 例如 在插入模式下按 Backspace 会删除字符 但我必须用箭头键移动光标才能删除的字符消失 而且它也会使我退出插入模式 另一个例子 按 Del 删除字符有时会生成奇怪的字符 例

随机推荐