自动在VSCode的列上自动换行


105

如何自动在VSCode中自动换行?我的意思是,如果一行到达指定的列,请自动在不靠近该列的单词边界处插入换行符。Vim有一个叫做textwidth的设置,我可以在编辑Markdown时使用它。据我所知,它似乎不像VSCode。它只是具有控制软包装的方法。


2
有人可以回答这个吗!
umayfindurself

您在降价方面的使用非常出色,我从没想过要像这样艰难地休息。
马克·卡彭特(Marc Carpenter Jr)

Answers:


143

VSCode不支持此功能。但是您可以安装Rewrap扩展程序,该扩展程序允许您通过按Alt+ 格式化光标当前所在的块Q

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

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


2
将其标记为可接受的答案,并进行编辑以提及它现在支持自动包装!
Brian Schlenker

1
似乎这仅用于块注释?那代码行呢?我尝试使用最新版本1.9.1,并且块注释会自动换行,但是对于代码行(我正在使用C语言)却没有。
Yusuf Husainy

3
值得一提的是,它与MarkDown❤搭配使用效果非常好
chesterbr

2
正如@YusufHusainy指出的那样,我无法使用ReWrap包装代码行。
Fawwaz Yusran '19年

39

不幸的是,VSCode还没有此功能。但是,我们仍然可以使它像vim自动自动换行的漂亮功能一样。


第一步

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

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

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

    不要忘了更改(n)为您首选的列长度行。对我来说,将其设置为60会更舒适。

  3. 保存此设置。

第一步的主要目的是使我们在键入时感到更舒适,因为我们不需要手动键入Enter并看到很长的文本行。


第二步

我们需要为VSCode和set 安装Vim仿真vim textwidth

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

    "vim.textwidth": n,

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

  4. 保存此设置。


实际使用

完成编写整个文档后,可以使用这种方式将其格式化为硬包装线。

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

您说“还”。您知道任何计划或正在进行的工作吗?
oli_obk

不,我不确定。我有计划向VSCode开发团队推荐此功能。这就是为什么我说“还”的原因,因为在VSCode的未来中仍有可能添加此功能。
万达·伊奇萨努尔·伊斯拉


“视线模式”是什么意思?使用Shift + v只需在编辑器中输入大写
字母

在普通模式下而不是插入模式下键入它
Wanda Ichsanul Isra

14

现在,VSCode支持自动包装。

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

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

默认情况下,自动换行是关闭的。


24
这是用于“软”换行,也就是在编辑器中显示时换行,而不是换行实际文本。
forivall


2

硬包装评论

使用Rewrap扩展名

软包装代码

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

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

硬包装注释和软包装代码

不幸的是,扩展名和VSCode设置不能很好地播放。

随时支持此功能请求

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.