【问题标题】:How to keep vim from breaking string literals?如何防止 vim 破坏字符串文字?
【发布时间】:2013-09-21 07:03:48
【问题描述】:

这听起来像是一个非常基本的问题,可能有一个明显的解决方案,不幸的是我没有找到它。

如何防止 vim 在字符串中间中断(输入换行符)? 我输入一个字符串列表,它看起来像这样:

a=['a string', 'b string', 'c
string']

我喜欢换行符,我不希望 vim 只是换行并继续下一个编辑器行。我希望我的行大约 80 个字符长,而无需手动输入换行符。

我想要的是要么

  1. 不要打断任何字符串,即使它有空格

  2. 使用隐式字符串连接断开字符串,即关闭 字符串并在新行开始一个新字符串

  3. 在“c 字符串”之前中断

我找到的最接近的解决方案不是很有用:

Is there any way to get vim to auto wrap python strings at 79 chars?

how to configure vim to smartly wrap python strings?

Vim: Inter-String Line Breaking

目前,“J”是修复断弦最常用的键之一。

【问题讨论】:

  • 注意::set tw=0 完全关闭自动换行。
  • 谢谢,罗伯。这意味着您必须手动添加换行符,不是吗?因此,如果我有 70 个字符的行并在开头添加更多字符,我需要手动找到最接近 80 个字符的断点,然后按 Enter。我不能使用 gq,因为它有同样的问题。
  • @glts:这是一个类似的问题,他问的是让自动格式化 (gq) 不破坏字符串,我希望在打字时完成格式化。他也指向了 formatexpr,但这似乎很困难,我没有找到任何解决方案。
  • @Dan gq 和打字时的格式化使用相同的底层格式化机制。不依赖外部工具,'formatexpr' 确实是要走的路。正如其他人所指出的那样,写'formatexpr' 很难;您可能必须自己编写。

标签: python vim line-breaks


【解决方案1】:

这是我将所有行包装成 80 个字符而不破坏任何单词并保留较短行的方法:

:set formatoptions+=w
:set tw=80
gggqG

您还可以使用以下映射来格式化当前段落:

:nnoremap Q gqip

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-10
    • 1970-01-01
    • 2021-12-11
    • 1970-01-01
    • 2012-03-23
    • 2017-12-11
    • 2011-11-04
    • 1970-01-01
    相关资源
    最近更新 更多