Автоматически переносить строки в столбец в VSCode

Как я могу автоматически обернуть строки в VSCode? Под этим я подразумеваю, что если строка достигает указанного столбца, автоматически вставлять новую строку на границе слова, ближайшей к этому столбцу, без перехода. В Vim есть параметр textwidth, который делает это, и мне нравится использовать его при редактировании Markdown. Насколько я могу судить, это не похоже на VSCode. Просто у него есть способы контролировать мягкую упаковку.


person Brian Schlenker    schedule 30.03.2017    source источник
comment
Пожалуйста, проверьте stackoverflow.com/a/40782188/4238189   -  person Mable John    schedule 10.12.2020
comment
@MableJohn Это касается мягкого переноса (отображения длинных строк буфера, разделенных на несколько строк экрана), этот вопрос касается жесткого переноса (изменение буферные строки, чтобы дать определенную максимальную длину строки). Жесткий перенос может повлиять только на строку, которую вы в данный момент набираете, или может включать перекомпоновку или заполнение целых абзацев, чтобы каждая строка была как можно ближе к целевой длине строки без переполнения.   -  person Denis Howe    schedule 21.03.2021


Ответы (6)


VSCode не поддерживает это из коробки. Но вы можете установить расширение Rewrap, которое позволяет вам форматировать блок, в котором находится ваш курсор, нажав Alt + Q.

Rewrap не требует дополнительных настроек, так как он считывает настройки VSCode, чтобы получить столбец, в котором нужно прервать работу.

Rewrap также поддерживает автоматическое обертывание (по умолчанию отключено): https://github.com/stkb/Rewrap/wiki/Auto-wrap

person oli_obk    schedule 23.08.2017
comment
Пометить это как принятый ответ и отредактировать, чтобы упомянуть, что теперь он поддерживает автоматическую перемотку! - person Brian Schlenker; 15.02.2018
comment
Кажется, это только для блочных комментариев? как насчет строк кода? Я пробовал последнюю версию 1.9.1, и комментарии к блокам автоматически переносятся, однако для строк кода (я использую язык C) этого не происходит. - person Yusuf Husainy; 13.11.2018
comment
Стоит отметить, что он отлично работает с MarkDown ❤ - person chesterbr; 15.01.2019
comment
Я не могу обернуть строки кода с помощью ReWrap, как указал @YusufHusainy. - person Fawwaz Yusran; 09.05.2019
comment
Конфигурации (например, какой столбец переносить) в stkb.github.io/Rewrap/#/ настройки-vscode - person Aidin; 27.05.2021

К сожалению, в VSCode пока нет этой функции. Но мы все еще можем сделать его максимально приближенным к красивой функции vim автоматического переноса слов.


Первый шаг

Нам нужно настроить функцию мягкого переноса слов в VSCode.

  1. Откройте настройки VSCode через Code => Preferences => Settings.
  2. Добавьте эти 3 строки настроек редактора.

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

    Не забудьте изменить (n) на желаемую длину строки столбцов. Мне удобнее ставить 60.

  3. Сохраните эту настройку.

Основная цель этого первого шага - заставить нас чувствовать себя более комфортно при вводе текста, потому что нам не нужно вручную вводить Enter и видеть длинную строку текста.


Второй шаг

Нам нужно установить эмуляцию Vim для VSCode и установить vim textwidth.

  1. Установите эмуляцию Vim через расширения VSCode.
  2. Откройте настройки VSCode через Code => Preferences => Settings.
  3. Добавьте эту строку настройки vim.

    "vim.textwidth": n,
    

    Не забудьте изменить (n) на желаемую длину строки столбцов. Для меня я сделаю то же самое, что и (n) на первом шаге.

  4. Сохраните эту настройку.


Фактическое использование

Когда вы закончите писать весь документ, вы можете отформатировать его таким образом, чтобы он выглядел как строки с жестким переносом.

  1. Заблокируйте весь текст, используя визуальный линейный режим (Shift + v)
  2. Введите gq.
person Wanda Ichsanul Isra    schedule 18.08.2017
comment
Вы пока говорите. Вы знаете о каких-либо планах или текущей работе? - person oli_obk; 21.08.2017
comment
Нет, я не уверен. У меня есть план предложить эту функцию команде разработчиков VSCode. Вот почему я говорю еще, потому что все еще может быть возможность, что эта функция будет добавлена ​​в будущем VSCode. - person Wanda Ichsanul Isra; 21.08.2017
comment
Что подразумевается под визуальным линейным режимом? Использование Shift + v просто вводит заглавную букву V в редактор. - person user1081679; 09.04.2019
comment
Введите его, когда вы находитесь в обычном режиме, а не в режиме вставки - person Wanda Ichsanul Isra; 10.04.2019
comment
Вы сказали «Добавьте эти 3 строки настроек редактора». , ... но вы не сказали, где и как его добавить ... не предполагайте, что все ваши читатели хорошо знакомы с кодом VS ... в таком случае они не будут задавать этот тип вопросов - person Ben; 07.10.2020
comment
Этот ответ устарел. Пожалуйста, посмотрите ответ @Arun Kumar Khattri ниже и проголосуйте за него, чтобы я мог заменить этот ответ здесь. - person benni; 04.11.2020

Теперь VSCode поддерживает автоматическое обертывание из коробки.

Настройки -> Текстовый редактор -> Последние 3 параметра (как на сегодня) предназначены для автоматической упаковки.

  1. Перенос по словам (управляет переносом строк)
  2. Столбец переноса слов (управляет столбцом переноса текста в редакторе)
  3. Отступ при переносе (управляет отступом переносимых строк)

По умолчанию Word Wrap отключен.

person Arun Kumar Khattri    schedule 28.03.2019
comment
Это для мягкого переноса, иначе говоря, переноса, когда он отображается в редакторе, но не для переноса вашего фактического текста. - person forivall; 17.07.2019
comment
поскольку слово жесткий перенос упоминается как в заголовке вопроса, так и в описании вопроса, я собираюсь проголосовать против этого ответа. - person Aidin; 27.05.2021

Комментарии в твердой оболочке

Используйте расширение Rewrap.

Код мягкой упаковки

Добавьте следующий параметр (замените ширину столбца на свое предпочтение): "editor.wordWrapColumn": 100

Затем добавьте "editor.wordWrap": "wordWrapColumn" (перенос на столбец) или "editor.wordWrap": "bounded" (перенос на столбец или область просмотра).

Комментарии и код мягкой упаковки

К сожалению, настройки расширения и VSCode не работают должным образом.

Не стесняйтесь проголосовать за этот запрос функции.

person jabacchetta    schedule 09.01.2019

По состоянию на 2020 год и если вы используете плагин Prettier - Code formatter:

Go to Plugins -> Find Prettier -> Cog -> Extension Settings -> Prettier: Print Width Fit code within this line limit и установите все, что хотите. По умолчанию 80.

Когда вы сохраните файл, Prettier отформатирует его автоматически.

person ACV    schedule 09.10.2020
comment
Это отлично работает для кода. Чтобы он также форматировал файлы Markdown, установите proseWrap в always (по умолчанию preserve). - person Max Ivanov; 23.10.2020

В настоящее время есть открытый запрос для этого в трекере VS Code Issue на GitHub, Вы можете найти его здесь

person Mark Carpenter Jr    schedule 25.08.2017
comment
К сожалению, проблема закрыта, а тема заблокирована. Мы стараемся сохранить VS Code компактным :( - person rbrtl; 16.09.2020
comment
Да определенно закрыто. - person Mark Carpenter Jr; 16.09.2020