Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

How can I automatically hard wrap lines in VSCode? By that I mean if a line reaches a specified column, automatically insert a newline at the word boundary closest to that column without going over. Vim has a setting called textwidth that does this that I like to use when editing Markdown. It doesn't seem like VSCode does, as far as I can tell. It just has ways to control softwrapping.

@MableJohn That's about soft wrap ( displaying long buffer lines split onto multiple screen lines), this question is about hard wrap ( modifying the buffer lines to give a certain maximum line length). Hard wrap may affect only the line you are currently typing or may include "reflowing" or "filling" whole paragraphs so that every line is as close to the target line length as possible without overflowing. Denis Howe Mar 21, 2021 at 15:16 To enable the visual guides (vertical lines) at column 120, edit settings.json > and add/edit "editor.rulers": [120] . Ricardo Apr 27, 2022 at 17:48

VSCode doesn't support this out of the box. But you can install the Rewrap extension, which allows you to format the block that your cursor is currently in by pressing Alt + Q .

Rewrap requires no further settings, since it reads VSCode's settings to obtain the column at which to break.

Rewrap also supports automatic wrapping (off by default): https://github.com/stkb/Rewrap/wiki/Auto-wrap

Marking this as the accepted answer and editing to mention that it now supports auto rewrapping! Brian Schlenker Feb 15, 2018 at 19:34 It seems this is only for block comments? what about code lines? I tried the latest version which is 1.9.1 and block comments do get auto wrapped, however for code lines (I am using C language) it does not. Yusuf Husainy Nov 13, 2018 at 17:28 Note to clumsy Mac users like myself, that's Option+Q , not Command+Q , which will close all of your workspaces :| Mark Jun 17, 2022 at 15:24
  • Open VSCode Settings via Code => Preferences => Settings .
  • Add these 3 lines of editor settings.

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

    Don't forget to change (n) with your preferred length of columns line. For me, I feel more comfortable to set it to 60.

  • Save this setting.

  • The main purpose of this first step is to make us feel more comfortable when we're typing because we don't need to manually type Enter and see a long line of text.

    Second Step

    We need to install Vim emulation for VSCode and set vim textwidth .

  • Install Vim emulation via VSCode extensions.
  • Open VSCode Settings via Code => Preferences => Settings .
  • Add this line of vim setting.

    "vim.textwidth": n,
    

    Don't forget to change (n) with your preferred length of columns line. For me, I will set this to be the same with (n) in the first step.

  • Save this setting.

  • Actual Use

    When you finish to write your whole document, you can format it to be hard wrap lines using this way.

  • Block all text using visual line mode ( Shift + v)
  • Type 'gq'
  • No, I'm not sure. I have a plan to propose this feature to VSCode dev team. That's why I say "yet" because there still might be a possibility this feature being added in the future of VSCode. Wanda Ichsanul Isra Aug 21, 2017 at 10:05 What is meant by "visual line mode"? Using Shift+v just enters a capital V into the editor user1081679 Apr 9, 2019 at 11:35

    As of 2020 and if you're using the Prettier - Code formatter plugin:

    Go to Plugins -> Find Prettier -> Cog -> Extension Settings -> Prettier: Print Width Fit code within this line limit and set to whatever you want. By default it's 80.

    When you save the file, Prettier will format automatically.

    That works perfectly for code. In order to make it format Markdown files as well, set proseWrap to always (default is preserve ). Max Ivanov Oct 23, 2020 at 1:10

    Now VSCode support auto "soft" wrapping out of the box.

    Settings --> Text Editor --> Last 3 options (as on today) is for autowrapping.

  • Word Wrap (Controls how lines should wrap)
  • Word Wrap Column (Controls the wrapping column of the editor)
  • Wrapping indent (Controls the indentation of wrapped lines)
  • By default Word Wrap is off.

    This is for "soft" wrapping, aka, wrapping when it's displayed in the editor, but not wrapping your actual text. forivall Jul 17, 2019 at 19:55 since the word " hard " wrap is mentioned both in the question title and the question description, I am going to downvote this answer. Aidin May 26, 2021 at 22:39

    Soft Wrap Code

    Add the following setting (replace column width with your preference): "editor.wordWrapColumn": 100

    Then add either "editor.wordWrap": "wordWrapColumn" (wraps at the column) or "editor.wordWrap": "bounded" (wraps at either the column or the viewport).

    Hard Wrap Comments and Soft Wrap Code

    Unfortunately the extension and VSCode settings do not play nicely.

    Feel free to upvote this feature request .

    Unfortunately the issue is now closed and the topic locked. "We try to keep VS Code lean" :( rbrtl Sep 15, 2020 at 23:46

    Most of these didn’t work for me, but I found the extension Vsctoix , which does.

    We start out with line breaks at column 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.
    

    Then we execute “IX: Join Lines” (no parameter):

    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.
    

    And then “IX: Break Line At” with parameter 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.
    

    It would be neat if it respected paragraph breaks and did both steps at once, but so far it’s the only extension that works for me – except I haven’t tried the vim emulation yet.

    You can do this without any extension. You just use two regex search-and-replace.

  • Isolate the lines you want to rewrap by moving them to a separate file.

  • Join all the lines into one line. For example, ctrl+h, "\n" ==> " ". Note: make sure regex is enabled (the dot star icon)

  • Split the line into multiple lines. For example, ctrl+h, "(.{100}) " ==> "$1\n". Notice the space after the paren.

  • Copy the lines back to the original file.

    There are many variations on this technique. For example, you could using comma instead of space "(.{100})," ==> "$1,\n". You could use Find in Selection alt+L instead of using a temp file.

    Edit: (below answer might be for a soft wrap, see here for difference between soft and hard wrap: https://stackoverflow.com/a/319932/9481613) In my version it is Preferences -> Settings then scroll down to "Editor: Word Wrap" where a dropdown box is available from which I selected wordWrapColumn. After choosing this and closing, when I click on View now at the bottom it says Word Wrap Alt+Z.

    You can easily set the column limit using ColumnLimit member in C_Cpp.clang_format_fallbackStyle in settings.json (You have to install Microsoft C/C++ extension)

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

    Then you can format the file using Shift + Alt + F

    There are many options you can change in this format feature

    "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 }

    Before

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

    After

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

    Thanks for contributing an answer to Stack Overflow!

    • Please be sure to answer the question. Provide details and share your research!

    But avoid

    • Asking for help, clarification, or responding to other answers.
    • Making statements based on opinion; back them up with references or personal experience.

    To learn more, see our tips on writing great answers.

  •