Код Visual Studio - удалить все пустые строки - регулярное выражение


133

Я потратил некоторое время, пытаясь понять, как удалить все пустые строки в Visual Studio Code, и у меня не получается заставить его работать. Кто-нибудь знает, как это сделать?

Если я ищу ^$, набирая его в поле поиска, VSC действительно находит пустые строки (полностью пустые строки, означает отсутствие пробелов), но не удаляет их, когда я нажимаю «Заменить все». Ничего не делает: ^ $

Для пустых строк с пробелами ^\s+$поиск работает, но не удаляет их. Что он делает, так это заменяет их пустой строкой без пробелов :)) ^ \ S + $

Должно быть, я что-то делаю не так. Я просто не могу понять, что это. Кто-нибудь знает? Спасибо.


1
Я добавил комментарий к проблеме, которую вы открыли по этому поводу, но для кого-то еще, на $самом деле не соответствует символу новой строки, он соответствует токену нулевой ширины, который существует до символа новой строки. Чтобы заменить новую строку, вам необходимо использовать, \nно VS Code в настоящее время не поддерживает совпадения многострочных регулярных выражений ( # 313 )
Мари

Спасибо Мари. Кажется, нам нужно немного подождать.
jozefk

4
Найдите это в режиме регулярного выражения ^ $ \ n и замените его пустым. Удачного кодирования !!!
sajal rajabhoj

Ответы:


195

Для тех, кому может быть интересно - что у меня работало в версии 1.3.1 (и все еще работает в 1.33.1) для удаления пустых строк, которые я использовал ctrl+ h(найти и заменить) alt+ r(использовать регулярное выражение)

Затем в поле поиска:

\n\n

В поле замены:

\n

Это должно сделать два последовательных знака конца строки в один.

отредактирован:

Если вам нужно заменить несколько пустых строк (более двух) одновременно, вы можете использовать следующее регулярное выражение в поле поиска:

\n+

Если вам нужно заменить также пустые строки пробелами, вам нужно использовать следующее регулярное выражение в поле поиска:

\n+\s*\n

Код VS использует регулярные выражения javascript


10
По этим строкам я использую^[\r\n]{3,}
RJ Cuthbertson

Теперь работает. Спасибо :) Множество версий VSC между ними, но это нормально. Замените \ n \ n на \ n, работало нормально.
jozefk

Также посмотрите на решение @Dzumret ниже. В моем решении он удаляет только строки, в которых ничего нет. Его решение удаляет строки, в которых также есть пробелы (пробелы, табуляции)
suchoss

Этот ответ подходит не для всех случаев, что делать, если у вас есть пробелы в пустой строке
dhaker

1
Большой! Чтобы удалить более одной последовательных пустых строк, я заменил \ n + на \ n. Чтобы использовать пробелы, замените (^ \ s * \ n) + ничем
Иларио

115

Также работает этот шаблон регулярного выражения:

^\s*$\n

Затем CTRL+Enterзаменить все строки.

Объяснение вышеприведенного шаблона:

-----------------------------------------------
|  ^ | beginning of string anchor             |
-----------------------------------------------
| \s | any whitespace character               |
-----------------------------------------------
| '*'| zero or more repetitions               |
-----------------------------------------------
|  $ | end of string anchor                   |
-----------------------------------------------
| \n | new line                               |
-----------------------------------------------

Не уверен, но только это сработало для меня, по сравнению со всеми другими ответами. Хорошо объяснено. Спасибо.
Сай

У \nменя сработало размещение якорей снаружи. Затем VSCode позволил заменить его ничем (пустое поле «заменить на»).
Эрик

46

Код Visual Studio 1.13.0 Linux Lite:

  • Хит CTRL+H
  • Выберите «Использовать регулярное выражение».
  • Поле поиска: ^ (\ s) * $ \ n (введите столько окончаний \ n, сколько вам нужно)
  • Поле замены: пусто
  • Нажмите заменить все

Пустые строки пропали!


18

Вот мое регулярное выражение, оно улавливает все лишние новые строки и пустые строки, содержащие только пробелы, вкладки и т. Д.

\n\s*\n

И я заменяю все совпадения на \n

объяснение

\n       : New Line
\s*      : Zero or more consecutive white space characters or new lines
\n       : Another New Line

PS: Не забудьте выбрать параметр регулярного выражения в окне поиска !!


13

Попробуйте использовать ^ \ s * \ n в диалоговом окне замены кода VS -

посмотреть здесь


6

нет, ты делаешь это правильно.

Здесь у меня такое же поведение.

Я также пробовал другое регулярное выражение: (\r?\n){2,} но похоже, что оно работает только для отдельных строк.

возможно, есть предпочтение изменить поведение регулярного выражения по умолчанию, или, может быть, VS просто построен таким образом (на основе строки)

Конечно, вырезать-вставить и вернуться из другого текстового редактора не составляет труда.


3
это помогло мне только после того, как я заменил все ^\s*$пустым, затем я попробовал(\r?\n){2,}
Михай Попеску

4

Не знаю, как вы, но запоминать множество команд для меня - это пустая трата времени!

Используйте расширение "Организатор пустых строк", вот описание:

Это расширение поможет вам организовать пустые строки в коде, удалив несколько пустых строк. Расширение удаляет пустые строки только из выбранных строк, если таковые имеются, в противном случае - из всего файла.

Как использовать: проверьте описание расширения, но это действительно выглядит красиво!

blankLine.triggerOnSave boolean true    If set to true, the command will be triggered on save.

Другими словами, после сохранения файл автоматически очищается!


Привет, @Jun! Я использую Sublime Text3, который решил много проблем, плюс он легче и имеет несколько приятных функций.
Марсело Агимовель

какой плагин вы используете с Sublime Text3? Раньше я использовал Webstorm, и он встроен.
июнь 711,

Html / CSS / JS Prettify
Marcelo Agimóvel

3

В Visual Studio мне больше всего подходят следующие варианты:

Заменить: на ^\n$ : <no value here>

Это найдет все пустые строки и очистит их.


3

В моем случае. Решение kobi7 (\r?\n){2,}работало только для меня, мне пришлось запустить его снова с небольшой модификацией, чтобы заставить его работать для отдельных строк (просто изменил 2 на 1)

^(\r?\n){1,}

0

Code Maid Extension - это все, что вам нужно. Вы можете использовать сочетание клавиш Ctrl M + пробел, чтобы очистить файл, он удалит пустые строки и отформатирует код. Вы также можете настроить формат и правила очистки. Надеюсь, это будет полезно.


Не найдено (в Manjaro Linux).
Марсело Агимовель

2
Это потому, что это расширение Visual Studio, а не расширение Visual Studio Code.
Rene Juuse



-1

Заменить: ^ \ n $ на: "пробел"


и удалить все пустые места в документе?
Angry 84

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.