【问题标题】:Wrap long lines in Vim?在 Vim 中换行?
【发布时间】:2010-12-24 20:19:21
【问题描述】:

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

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

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

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


澄清

是的,我正在使用运动命令,特别是 gqformatexprformatprog 均未设置。如果重要的话,这是在 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 前面有空格,同样的问题。
  5. 最后一次按 ESC。现在试试gq,注意它只包裹And some after.;我无法让 vim 换行其余部分(不进入插入模式并手动换行,然后它就可以了)。

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

【问题讨论】:

  • 转载并获得了“好”的结果,抱歉。我的答案下的详细信息。

标签: vim paste word-wrap


【解决方案1】:

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

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

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

【讨论】:

  • 正是我的想法,+1
  • 是的,我正在提出动议。它适用于其他线路,所以我很确定它有效。我一直在尝试 gq,它通常可以工作。我会更新问题。
  • gq 不应该换行的唯一情况是 1) 行没有空格,2) 行比 'textwidth' 短,3) 'formatexpr'/'formatprg' 是set 并且被调用的函数/程序不换行文本。由于这些情况似乎都没有在这里发挥作用,我不确定您为什么会看到这种行为。
  • 我添加了一些步骤来重现类似问题。这只发生在我身上吗?我用 gvim -u NONE 试过了,所以它不是我的 vimrc。
  • 感谢您的澄清。问题是formatoptions 中的 b 设置。这告诉 Vim 只包装在最后插入期间添加的文本。
【解决方案2】:

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

更新

我确认错误。运行 vim -u NONE,我的formatoptionsvt

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

【讨论】:

  • 请参阅我的说明和重现步骤。
  • 我不知道像 left 这样的小动作足以引起换行,但确实如此!我忠实地按照你的步骤复制并在“但是”之前完成了一个换行,这对我来说看起来完全正确。我在 Ubuntu 9.10 上使用 vim 7.2.245 开箱即用。如果你告诉我,我可以做更多的测试。
  • “开箱即用”是个谎言。我的 .vimrc 确实:“ Carl 的 vim 设置 syn on set sts=3 set ai set sw=3
  • @Carl: 你的发行版 (Ubuntu) 可能在 /etc/vim/vimrc 和 /etc/vim/gvimrc 中有一些自定义
  • @Carl:-u NONE 也会跳过 /etc 中的系统初始化;在 vim 中查看 :help initialization
猜你喜欢
  • 2011-08-01
  • 1970-01-01
  • 2011-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-22
相关资源
最近更新 更多