4

我注意到gq当我粘贴长线时这不起作用。例如,使用textwidth=72andformatoptions=tcroqbnl时,gq 拒绝包装它(在插入模式下,我粘贴了整个标签内容,然后使用 退出插入模式ESC):

<label for="contact_reason_1">To get assistance with or to confirm a tire replacement recommendation</label>

如果我添加一个换行符(例如,在“to”之后),它就会换行。有趣的是,如果我重新加入这条线,它会很高兴地再次包装它。所以 VIM 似乎以某种方式记住了“哦,这是一个粘贴,不要包装它”。

如何关闭该功能?我希望 gq 在命令模式下始终工作。取出似乎没有帮助(它不应该,这不是插入模式)lformatoptions


澄清

是的,我正在使用运动命令,特别是gq<Right>. formatexpr并且formatprog都未设置。如果重要的话,这是在 Debian GNU/Linux 上的 gvim,vim 版本 7.2p284。

重现步骤

  1. 在打开的文件上弹出 gvim。
  2. i进入插入模式,然后输入This is a long line. A long line. But not wrappable yet. Or yet. Soon.
  3. ESC,然后按I。输入Now putting text in front of the long line. 注释:最后一个句号后面有一个空格,不能让 SO 显示出来,除非这个注释在这里。乐趣。
  4. ESC,然后按A。输入And some after. 注释:And 之前的空格,同样的 SO 问题。
  5. 最后按ESC一次。现在试试gq<Left>,注意它只换行And some after.;我无法让 vim 包装该行的其余部分(无需进入插入模式并手动进行换行,然后它就可以工作了)。

修复此状态是可行的;在“现在”之后放置一个换行符然后点击撤消使换行再次起作用。哇。

4

2 回答 2

8

gq不足以包装文本。你必须给它一个要换gqj行的动作(比如 )或告诉它用gqq. 你确定你不只是打错了吗?

如果不是,如果有的话,formatexprformatprg选项设置是什么?

更新
问题是 b 中的设置formatoptions。这告诉 Vim 只包装在最后插入期间添加的文本。

于 2009-12-09T13:59:18.403 回答
1

我发现如果我在执行 gq 之前选择该行,它可以正常工作。难道gq不想和一些文本选择操作结合起来工作吗?

更新

我确认错误。运行 vim -u NONE, my formatoptionsare vt

也许 Bram Molenar 或至少 vim 社区会感兴趣?

于 2009-12-09T14:02:22.600 回答