Visual Studio Code - видалити всі порожні рядки - регулярний вираз


133

Я провів деякий час, намагаючись розібратися, як видалити всі порожні рядки з коду Visual Studio, і я не можу працювати. Хтось знає, як це зробити, будь ласка?

Якщо я шукаю ^$, вводячи його в полі пошуку, VSC виявляє порожні рядки (повністю порожні рядки, значить немає пробілів), але він не видаляє їх, коли натискаю Замінити все. Це нічого не робить: ^ $

Для порожніх рядків з пробілами ^\s+$Пошук працює, але він їх не видаляє. Що він робить, це замінює їх порожнім рядком без пробілів :)) ^ \ s + $

Мабуть, я роблю щось не так. Я просто не можу зрозуміти, що це таке. Хтось знає? Дякую.


1
Я додав коментар до проблеми, яку ви відкрили з цього приводу, але ні для кого іншого, $насправді не відповідає новому символу рядка, він відповідає нулю ширини нуля, який існує до нового символу рядка. Для заміни нового рядка вам потрібно скористатися, \nале код VS наразі не підтримує багаторядкові збіги з регулярними виразками ( # 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) + нічим
Іларіо

114

Що також працює, це ця схема регулярного вираження:

^\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? Раніше я використовував веб-шторм, і він вбудований.
Червень 718,

Html / CSS / JS Prettify
Марсело Агімовель

3

У Visual Studio я знайшов найкращі для мене такі роботи:

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

Це знайде всі порожні рядки та очистить їх.


3

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

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

0

Розширення Code Maid - це все, що вам потрібно. Ви можете використовувати ярлик Ctrl M + пробіл для очищення файлу, це видалить порожні рядки та відформатує ваш код. Ви також можете налаштувати формат та правило очищення. Сподіваюся, це корисно.


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

2
Це тому, що це розширення Visual Studio, а не розширення Visual Studio Code.
Rene Juuse


0

Є моя версія для очищення порожніх рядків з білим простором:

find:    (?:\s*$(\r?\n)){2,}
replace: $1

-1

Замініть: ^ \ n $ на: "порожній пробіл"


і видалити кожен порожній пробіл у документі?
Сердитий 84

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.