我将文件类型的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
在设置此变量后加载并且不会执行。