vim 注释格式选项重复不起作用



我将文件类型的comments选项设置为b:*.如果我打开这样的文件,我可以用set comments?来验证这一点。现在,我进一步明确设置了使用r在新行上重复注释的formatoptions。毕竟调用set formatoptions?返回总和j1tcqln。 如果o打开一个新行并写一些类似* This is a comment命中<CR我希望在新行上得到一个*es 很好,导致r选项,但没有。
+comments功能是否可用于:echo has('comments')的检查为正,返回1
这里有什么问题?

编辑:
这是我ftplugin/markdown.vim

setlocal comments=b:*,b:-,b:+,b:>
setlocal formatoptions+=r
setlocal formatoptions-=c
echom 'Format: ' . &formatoptions

打开此类型的文件时,最后一行会留下正确的消息。但是之后手动调用:echo &formatoptions,它又是错误的输出。

似乎无论我在这个ftplugin做什么之后它都不再存在,即使它已被执行。

编辑:
看起来我的ftplugin/usr/share/nvim/runtime/ftplguin/中的默认覆盖了。这有意义吗,我怎样才能将它们混合起来?

文件类型插件按以下顺序来源,每个插件都可能覆盖前一个:

$HOME/.vim/ftplugin/markdown.vim
$VIMRUNTIME/ftplugin/markdown.vim
$HOME/.vim/after/ftplugin/markdown.vim

---编辑---

第一个位置适合两个场景:

  • 您正在为 Vim 本身不支持的语言创建支持脚本,
  • 您希望阻止 Vim 为特定文件类型(答案中的解决方案(获取默认支持脚本。

第二个地点是禁区。这有四个主要原因:

  • 您的更改可以并且将在将来的更新中被覆盖,
  • 您的更改可能会使 Vim 不稳定,
  • 不得不以 sudo 的方式进入您的配置很快就会变得烦人,
  • 的东西放在你的$HOME里.

第三个位置是最后来源的,因此它允许您有选择地覆盖默认设置并添加自己的设置。对于您自己的特定于文件类型的设置,这是最安全的位置。

解决方案是在ftplugin文件的标头中添加以下内容:

if exists('b:did_ftplugin') | finish | endif
let b:did_ftplugin = 1

然后是必要的,因为/usr/share/nvim中的ftplugin在设置此变量后加载并且不会执行。

最新更新