在 VSCode 中的列自动硬换行

Automatically hard wrap lines at column in VSCode

如何在 VSCode 中自动硬换行?我的意思是,如果一行到达指定的列,则自动在最靠近该列的单词边界处插入一个换行符而不会越过。 Vim 有一个名为 textwidth 的设置,我喜欢在编辑 Markdown 时使用它。据我所知,VSCode 似乎没有。它只是有控制软包装的方法。

很遗憾,VSCode 还没有这个功能。但是,我们仍然可以使它接近vim automatic word wrapping美丽的特征。


第一步

我们需要在 VSCode 中设置软自动换行功能。

  1. 通过 Code => Preferences => Settings 打开 VSCode 设置。
  2. 添加这 3 行编辑器设置。

    "editor.wordWrap": "wordWrapColumn",
    "editor.wrappingIndent": "same",
    "editor.wordWrapColumn": n
    

    不要忘记将 (n) 更改为您喜欢的列行长度。对我来说,我觉得设置为60更舒服。

  3. 保存此设置。

这第一步的主要目的是让我们在打字时感觉更舒服,因为我们不需要手动输入 Enter 并看到一长串文字.


第二步

我们需要安装Vim emulation for VSCode并设置vim textwidth

  1. 通过 VSCode 扩展安装 Vim 仿真。
  2. 通过 Code => Preferences => Settings 打开 VSCode 设置。
  3. 添加这一行 vim 设置。

    "vim.textwidth": n,
    

    不要忘记将 (n) 更改为您喜欢的列行长度。对于我来说,我会在第一步中将其设置为与 (n) 相同。

  4. 保存此设置。


实际使用

当您完成整个文档的编写后,您可以使用这种方式将其格式化为硬换行。

  1. 使用视线模式阻止所有文本 (Shift + v)
  2. 输入'gq'

VSCode 不支持开箱即用。但是您可以安装 Rewrap 扩展,它允许您通过按 Alt + Q 来格式化光标当前所在的块.

Rewrap 不需要进一步的设置,因为它会读取 VSCode 的设置来获取要中断的列。

Rewrap也支持自动换行(默认关闭):https://github.com/stkb/Rewrap/wiki/Auto-wrap

目前在 GitHub、You Can Find It Here

的 VS 代码问题跟踪器中有一个打开请求

硬包装评论

使用 Rewrap extension.

软包装代码

添加以下设置(用您的偏好替换列宽):"editor.wordWrapColumn": 100

然后添加 "editor.wordWrap": "wordWrapColumn"(在列处环绕)或 "editor.wordWrap": "bounded"(在列或视口处环绕)。

硬包装评论和软包装代码

遗憾的是,扩展和 VSCode 设置播放效果不佳。

随时upvote this feature request

现在 VSCode 支持开箱即用的自动换行。

设置 --> 文本编辑器 --> 最后 3 个选项(与今天一样)用于自动换行。

  1. 自动换行(控制换行方式)
  2. Word Wrap Column(控制编辑器的换行列)
  3. 换行缩进(控制换行的缩进)

默认情况下自动换行处于关闭状态。

自 2020 年起,如果您使用 Prettier - Code formatter 插件:

Go to Plugins -> Find Prettier -> Cog -> Extension Settings -> Prettier: Print Width Fit code within this line limit 并设置为任何你想要的。默认为 80。

保存文件时,Prettier 会自动格式化。

编辑:(以下答案可能是针对软包装的,请参阅此处了解软包装和硬包装之间的区别:) 在我的版本中,它是 Preferences -> Settings 然后向下滚动到“Editor: Word Wrap”,其中有一个下拉框可供选择,我从中选择了 wordWrapColumn。选择并关闭后,当我单击底部的“立即查看”时,它会显示 Word Wrap Alt+Z。

如果有人 运行 遇到问题,可能需要禁用辅助功能 support/screen reader。转到 首选项 >> 文本编辑器 >> 辅助功能支持并将其关闭。

您可以使用 ColumnLimit 成员 in C_Cpp.clang_format_fallbackStyle in settings.json 轻松设置列限制(您必须安装 Microsoft C/C++ 扩展)

"C_Cpp.clang_format_fallbackStyle": "{ BasedOnStyle: WebKit, IndentWidth: 4, ColumnLimit: 80 }",

然后您可以使用 Shift + Alt + F[=18 格式化文件=]

您可以在此格式功能中更改许多选项

"C_Cpp.clang_format_fallbackStyle": "{ BasedOnStyle: WebKit, UseTab: Never, IndentWidth: 4, TabWidth: 4, BreakBeforeBraces: Attach, AllowShortIfStatementsOnASingleLine: false, IndentCaseLabels: false, ColumnLimit: 80, AccessModifierOffset: -4 }",

Name of the predefined style used as a fallback in case clang-format is invoked with style file but the .clang-format file is not found. Possible values are Visual Studio, LLVM, Google, Chromium, Mozilla, WebKit, Microsoft, GNU, none, or use {key: value, ...} to set specific parameters. For example, the Visual Studio style is similar to: { BasedOnStyle: LLVM, UseTab: Never, IndentWidth: 4, TabWidth: 4, BreakBeforeBraces: Allman, AllowShortIfStatementsOnASingleLine: false, IndentCaseLabels: false, ColumnLimit: 0, AccessModifierOffset: -4, NamespaceIndentation: All, FixNamespaceComments: false }

之前

void Proc::Memory::getSramOff(const char* mem_name, uint dataSize, uint addrBits, uint& noOfBytes, uint& sram_off)

之后

void Proc::Memory::getSramOff(const char* mem_name, uint dataSize,
    uint addrBits, uint& noOfBytes, uint& sram_off)

其中大部分对我不起作用,但我找到了扩展程序 Vsctoix,它可以。

我们从第 80 列的换行符开始:

Mechanisms such as a “windfall clause” help distribute riches within particular 
futures. But for a windfall clause to be useful, many conjunctive assumptions 
have to be true. We present a new method to borrow against potential future 
windfalls today, when they have greater marginal use. The method also increases 
the probability and thus the expected value of the windfalls.

然后我们执行“IX: Join Lines”(无参数):

Mechanisms such as a “windfall clause” help distribute riches within particular futures. But for a windfall clause to be useful, many conjunctive assumptions have to be true. We present a new method to borrow against potential future windfalls today, when they have greater marginal use. The method also increases the probability and thus the expected value of the windfalls.

然后“IX: Break Line At”参数为 100:

Mechanisms such as a “windfall clause” help distribute riches within particular futures. But for a 
windfall clause to be useful, many conjunctive assumptions have to be true. We present a new method 
to borrow against potential future windfalls today, when they have greater marginal use. The method 
also increases the probability and thus the expected value of the windfalls.

如果它尊重段落分隔符并同时执行两个步骤,那就太好了,但到目前为止,它是唯一适合我的扩展——除了我还没有尝试过 vim 仿真。