Sublime Text 2: Как удалить пустые / пустые строки


272

Допустим, у меня был текстовый файл со следующими девятью строками:

foo

bar

baz

qux

quux

Как я могу использовать Sublime Text 2, чтобы удалить все четыре пустые / пустые строки, оставив только пять строк?

Ответы:


658

Выберите текст

Нажмите:

  • Ctrl+ Hна ПК или
  • Command+ Alt+ Fна Mac или
  • Нажмите Найти-> Заменить.

Убедитесь, что вы выбрали «регулярное выражение», нажав:

  • Alt+ Rна ПК или
  • Command+ Alt+ Rна Mac или
  • Нажмите .*в поле поиска.

Найти то, что: ^\n

Заменить на: (ничего, оставьте пустым).


3
Это работает, спасибо! Есть ли способ привязать этот поиск / заменить к сочетанию клавиш или как-то сохранить его для быстрого доступа? Я погуглил его и ничего не смог найти
Ник

46
Небольшое предложение использовать ^(\r|\n\r?)для покрытия всех возможных разрывов строк.
Харис Краина

5
Для меня (Sublime Text 2) ярлык (Alt + Cmd + F), как описано Hugp Corra
Maxence

24
Лучший способ найти все пустые строки (включая строки с пробелами) был бы: ^[\s]*?[\n\r]+
Ящики

5
@Crate вам не нужен ?, так как *также соответствует нулю вхождений и \s*будет соответствовать дополнительному символу '\ r', например, при редактировании текста windows в среде linux, как и в ^\s*$случае с трюком.
drevicko

67

Регулярное выражение в ответе Хьюго верно, когда в строке нет пробелов. В случае, если есть регулярное выражение пространства может быть^\s+$


32
Это предполагает, что есть пробел. Кроме того, он не будет работать для замены строк ничем. Попробуй ^[\s]*?[\n\r]+вместо этого. Я проверил это, и это работает.
Ящики

24

Есть также несколько плагинов ST2 / ST3 для таких задач. Мне нравятся эти два:

Первый имеет два метода для удаления пустых / ненужных строк. Один из них называется, Delete Surplus Blank Linesэто круто. Он удаляет только те строки, за которыми следует другая пустая строка


10

Решение Найти / Заменить:

Найти регулярное выражение:\s+

Заменить на: // один пробел


3
На самом деле, это: $ \ s +
Крис

8

Даже не знаю, как все это работает, но я пытался ^\s*$и не работал (оставив еще несколько пустых строк).

Вместо этого это ^\s*работает для меня

{возвышенный текст 3}


7

Я должен был использовать:

заменить \ n ^ \ s * \ n на \ n

Https://github.com/NicholasBuse/sublime_DeleteBlankLines плагин не сделал ничего.


2
Убедитесь, что вы выбрали область, на которую хотите повлиять, а затем используйте соответствующие сочетания клавиш Windows : Ctrl + Alt + Backspace (удаление пустых строк) Ctrl + Alt + Shift + Backspace (удаление лишних пустых строк) OSX : Ctrl + Alt + Delete (Удалить пустые строки) Ctrl + Alt + Shift + Delete (Удалить пустые строки) Linux : Ctrl + Alt + Backspace (Удалить пустые строки) Ctrl + Alt + Shift + Backspace (Удалить избыточные пустые строки)
Xtremefaith

5

Возвышенный текст 2 и 3

Комментарии @crates работают для меня,

Шаг 1: Просто нажмите на ctrl+H

Шаг 2: нажмите на кнопку RegEX

Шаг 3: напишите это в Find: ^[\s]*?[\n\r]+

Шаг 4: заменить все


5

Проще, чем я думал. Ctrl+ AЗатем Ctrl+ Hзатем выберите регулярное выражение .*. Заменить \n\nна \n. Вуаля!


3

Вы ищете это:

^\n|^\s+$

строка не будет удалена, если перед ней находится контент с пробелами или вкладками>

например:

они не будут удалены: ... пробел ... abc

... вкладка ... abc

это будет:

... космос ... ... ничего больше ...

... вкладка ... ... ничего больше ...


3

Использование нескольких вариантов выбора: выберите одну пару разрывов строк, затем используйте Быстрый поиск всех ( Alt+ F3) или несколько раз Быстрый выбор следующего ( Ctrl+ D), чтобы выделить их все; затем нажмите, Enterчтобы заменить их на разрывы строк.


1
В больших документах я нахожу этот сбой Sublime.
Thalecress

3

Это более простой способ сделать это без регулярных выражений. Вы просто должны выбрать весь текст. затем перейдите к: Edit -> Permute Lines -> Unique.

Вот и все. и все пустые строки будут удалены.


Это удалит ВСЕ неуникальные строки. Не просто заготовки. Итак, скажем, у вас есть HTML с множеством строк, являющихся одним закрытием </ div>, он удалит их все, кроме первой. Или в коде, он удалит все ваши закрытия}. Это не надежно, чтобы удалить только пустые строки, понять, что он делает.
Иван Мака

2

Другой способ, вы можете использовать командную строку cc.dblConyEdit (плагин) для удаления пустых или пустых строк.


1

Там также "Соединить линии". Если в OSX выделите весь ваш текст и несколько раз нажмите CMD-J, и он свернет ваш выбор за строкой, удалив разрывы строк.

Изменить: этот подход оставит вас все на одной строке, а это не то, что вы просили.


2
Я вижу , где вы собираетесь с этим , хотя .. это предположение приводит перетаскивая все содержимое в одну строку, но макрос бы сделать эту работу: (ключи OSX) ctrl-q(запись макросов), cmd-j(присоединиться к линии), down arrow, ctrl-q(конец макро) , Затем shift-ctrl-qповторять так часто, как требуется ...
ptim



0

В моем случае некоторые пустые строки содержали пространство нулевой ширины символа Юникода (U + 200b). Чтобы убрать пустые строки, в том числе с этим символом Unicode:

\s\x{200b}|^\s

0

Используя поиск / замену, попробуйте вставить выделение, начинающееся в конце строки над пустой строкой и заканчивающееся в начале строки после пустой. Это работает для одной пустой строки. Вы можете повторить процесс для нескольких пустых строк. CTRL- Hпоместите свой выбор в поле поиска и поместите одну новую строку в поле замены с помощью копирования / вставки или другим способом.


0

Чтобы найти лишние пробелы и пустые строки, нажмите Ctrl+ Shift+ F Выбрать Регулярные выражения Найти

[\n\r]{2,}

а затем заменить на

\n

убрать все виды пробелов в возвышенном и сказочном видении


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