我注意到当我粘贴一条长行时gq不起作用。例如,使用textwidth=72
和formatoptions=tcroqbnl
,gq拒绝包装它(在插入模式下,我粘贴整个标签内容,然后使用ESC退出插入模式):
<label for="contact_reason_1">To get assistance with or to confirm a tire replacement recommendation</label>
如果我在(在“to”之后)添加换行符,那么它将换行。有趣的是,如果我一起加入这条线,它会很高兴再次包裹它。所以VIM似乎在某种程度上记得“哦,这是一个粘贴,不要包装它”。
如何关闭该功能?我希望gq在命令模式下始终有效。从l
中取出formatoptions
似乎没有帮助(它不应该,这不是插入模式)。
是的,我正在使用动作命令,特别是gq <Right>。 formatexpr
和formatprog
都没有设置。如果重要的话,这是在Debian GNU / Linux,vim版本7.2p284上的gvim中。
This is a long line. A long line. But not wrappable yet. Or yet. Soon.
Now putting text in front of the long line.
注意:在最后一段时间后有一个空格,无法显示SO,除非此注释在此处。 FUN。And some after.
注意:在And之前的空格,同样的SO问题。And some after.
;我不能让vim包装剩余的行(没有进入插入模式并手动执行换行,然后它工作)。修复这种状态是可行的;在“now”之后添加换行符然后点击撤消会使换行再次运行。 WTF。
gq不足以包装文本。你必须给它一个动作来包装(如gqj)或告诉它用gqq包装当前行。你确定你不只是错误的吗?
如果你不是,那么formatexpr
和formatprg
的选项是什么?
更新
问题是formatoptions
中的b设置。这告诉Vim只包装上次插入时添加的文本。
我发现如果我在做gq之前选择该行,它可以正常工作。 gq是否希望与某些文本选择操作相结合才能工作?
UPDATE
我确认了这个错误。运行vim -u NONE,我的formatoptions
是vt
。
也许Bram Molenar或至少vim社区会感兴趣?