Как заставить Word Wrap вставлять новые строки в Notepad++
Я знаю, что у Кейт есть функция, которая автоматически разбивает строку новой строкой, если строка превышает определенное количество символов, например 80.
Notepad++ имеет функцию переноса слов под таблицей Views, но он не вставляет символ новой строки. Он просто разбивает длинные строки визуально, не вставляя фактические новые строки.
Есть ли в Notepad++ плагин или функция для автоматического разрыва длинных строк с использованием новых строк?
4 ответа
Если вы хотите, чтобы Notepad++ вставлял CR/LF там, где в данный момент отображается перенос слов (в зависимости от ширины окна), выделите текст и нажмите CTRL + I -или- Редактировать | Линейные Операции | Сплит Линии.
Это хорошо, потому что позволяет визуально просмотреть, где произойдут разрывы, изменив размер окна. Вы можете использовать сочетание клавиш CTRL+J для объединения строк в качестве обратной последовательности этой команды.
Это не разделяется на конкретный номер столбца, если размер вашего окна не соответствует этому столбцу. Если вы хотите использовать конкретный номер столбца, попробуйте Plugins | TextFX Править | Функция перемотки. Если вы не хотите, чтобы новые строки вставлялись в столбец 72, то сначала вам нужно скопировать номер столбца в буфер обмена. Нетрадиционно, но это работает.
Если вы использовали UltraEdit, это похоже на функцию "Преобразовать перенос в конец строки".
Я не знаю, есть ли плагин, и я не могу найти какой-либо пункт меню, чтобы сделать это, но это можно сделать с помощью регулярного выражения заменить все...
- Найти:
\s(?<=.{80})
- Заменить:
$0\r\n
Это найдет ближайшее пространство \s
после 80 символов оглянуться (?<=.{80})
и заменить на весь матч $0
с последующим возвратом каретки \r
& новая линия \n
для DOS/Windows.
Используйте только новую строку \n
для Linux.
При этом используются ретроспективные и предварительные просмотры, чтобы...
- найти первый символ после 80
- найдите последовательный набор непространственных символов, за которым следует (1)
- соответствует пробелу, когда за ним следует (2)
У меня работает замена последнего пробела перед символом 80 на новую строку.
Находить:\s(?=\S*((?<=.{80}).))
Заменять:
Обратите внимание, чтоReplace
кнопка в N++ не работает при вставке\n
. Я думаю, что это ошибка, но использованиеReplace All
работает отлично. Также обратите внимание, что replace all будет искать следующий блок из 80 символов после совпадения (пробела), что должно быть правильным поведением для разделения очень длинных строк.
Найдите последний пробел перед 80-м символом и разбейте строку в этой позиции:
- найти
(.{1,80})(\h+\R?|\R)
- замещать
\1\r\n