我将文件类型的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/
中的默认值覆盖了。这是否有意义,我该如何将它们混合起来?
答案 0 :(得分:1)
Filetype插件按此顺序获取,每个插件都可能覆盖前一个插件:
$HOME/.vim/ftplugin/markdown.vim
$VIMRUNTIME/ftplugin/markdown.vim
$HOME/.vim/after/ftplugin/markdown.vim
---编辑---
第一个位置适合两个场景:
第二个位置是禁区。主要原因有四个:
$HOME
。第三个位置是最后一个来源,因此它允许您有选择地覆盖默认设置并添加自己的设置。这是您自己的文件类型特定设置的最安全的地方。
答案 1 :(得分:0)
解决方案是在ftplugin
文件的标题处添加:
if exists('b:did_ftplugin') | finish | endif
let b:did_ftplugin = 1
然后是必要的,因为ftplugin
中的/usr/share/nvim
被加载后,如果设置了此变量,则没有被执行。