Vim注释格式选项重复不工作

时间:2018-06-12 20:12:30

标签: vim comments

我将文件类型的comments选项设置为b:*。如果我打开此类文件,我可以使用set comments?进行验证。现在我进一步明确设置formatoptions以使用r来重复对新行的评论。所有调用set formatoptions?后总和j1tcqln返回。 如果打开一个换行符o并写* This is a comment点击<CR之类的内容,我希望在新行上获得*,导致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/中的默认值覆盖了。这是否有意义,我该如何将它们混合起来?

2 个答案:

答案 0 :(得分:1)

Filetype插件按此顺序获取,每个插件都可能覆盖前一个插件:

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

---编辑---

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

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

第二个位置是禁区。主要原因有四个:

  • 您的更改可以在将来的更新中被覆盖,
  • 您的更改可能会使Vim不稳定,
  • 不得不以你的方式进入你的配置会很快烦恼,
  • 您的内容放入 $HOME

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

答案 1 :(得分:0)

解决方案是在ftplugin文件的标题处添加:

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

然后是必要的,因为ftplugin中的/usr/share/nvim被加载后,如果设置了此变量,则没有被执行。