Ответ 1
Да! И это проще, чем длина этого ответа может предложить!
Фон
Есть команда под названием wrap_lines
, которая имеет возможность точно, что вы хотите. wrap_lines
определяется в Packages/Default/paragraph.py
, строке 112 и редко документируется в списке команд Неофициальных Документов:
wrap_lines
Обтекает линии. По умолчанию он завершает строки в столбце первых столбцов.
- width [Int]: указывает столбец, в котором должны быть завернуты строки.
wrap_lines
уже доступен через элементы, расположенные в меню Edit -> Wrap
. Есть варианты обертывания абзаца, в котором курсор лежит в столбцах 70, 78, 80, 100 и 120, а также первая линейка. По умолчанию Wrap Paragraph at Ruler
сопоставляется с Alt+Q
в Windows и Super+Alt+Q
в OSX.
Работа с линейками
Что я имею в виду под первым правителем? Вы можете вызвать линейку через View -> Ruler
, но если вы хотите больше одного на экране (или предпочтете иметь правителей в письменной форме), вы можете добавить массив JSON целых чисел, каждый из которых определяет линейку - для любого .sublime-settings
. Например, массив, добавленный в файл настроек пользователя, выглядит следующим образом:
"rulers":
[
79,
80,
72
],
Благодаря правилу первого правителя, Alt+Q
будет обертывать строку длиной более 79 символов с отметкой 79-столбца, хотя там есть линейка "раньше" в столбце 72. "Первая линейка" doesn 't означает левую линейку, но первая определенная линейка. Если бы я переместил 80,
в индекс 0, как показано ниже, тогда строки будут заменены на 80 столбцов. Аналогично для 72
.
"rulers":
[
80,
79,
72
],
Использование привязки клавиш
Правители для слабых, вы говорите? Вы также можете написать новую привязку для обертывания строки в столбце по вашему выбору! Просто добавьте что-то вроде этого в ваш файл Preferences -> Key Bindings – User
:
{ "keys": ["alt+q"], "command": "wrap_lines", "args": {"width": 80} },
Удаление объекта args
вместо этого будет завершено на первой линейке, как это делает команда Wrap Paragraph at Ruler
. Wrap Paragraph at Ruler
фактически определен точно так же, как в файле ключевой карты Windows по умолчанию:
{ "keys": ["alt+q"], "command": "wrap_lines" },
Предостережения
Одна из лучших (и, в некоторых случаях, худших) вещей о команде wrap_lines
заключается в том, что она обнаружит любую последовательность неалфавитно-цифровых символов, которая начинает линию и дублирует ее при обертке. Это замечательно для написания комментариев, так как поведение, которое предположил ваш пример, действительно происходит:
# This is a super long message that has too much information in it. Although inline comments are cool, this sentence should not be this long, because having to scroll to the right to finish reading a comment is really annoying!
становится:
# This is a super long message that has too much information in it.
# Although inline comments are cool, this sentence should not be this
# long, because having to scroll to the right to finish reading a
# comment is really annoying!
Но если строка начинается с любых других символов, таких как начало цитаты, Sublime Text не знает ничего лучше, чем обертывать их. Итак:
# "This is a super long message that has too much information in it. Although inline comments are cool, this sentence should not be this long, because having to scroll to the right to finish reading a comment is really annoying!"
Становится этим, чего мы, вероятно, не хотим:
# "This is a super long message that has too much information in it.
# "Although inline comments are cool, this sentence should not be this
# "long, because having to scroll to the right to finish reading a
# "comment is really annoying!"
Это хорошая идея, чтобы быть осторожным с тем, что начинается с вашей первоначальной линии. Кроме того, команда wrap_lines
нацеливает весь абзац, на который курсор нажимает, а не только текущую строку и, что удивительно, только рабочий выбор. Это означает, что вы можете снова использовать команду в недавно завернутой серии строк, чтобы повторно обернуть их в другом столбце, но вы также можете обернуть некоторые строки, которые вы не хотели бы, например, если вы выравниваете абзац под заголовком в Markdown:
# Hey, this header isn't really there!
Be careful with what starts the original line. Also, the `wrap_lines` command **targets the entire paragraph**, not just the current line.
Если команда активирована в любом месте этого блока текста, вы получите следующее:
# Hey, this header isn't really there! Be careful with what starts the
original line. Also, the `wrap_lines` command **targets the entire
paragraph**, not just the current line.
Вы можете избежать такого рода проблем с умным использованием пробелов; другая пустая строка между заголовком и самим абзацем исправит обертку, так что:
# Hey, this header isn't really there!
Be careful with what starts the original line. Also, the `wrap_lines` command **targets the entire paragraph**, not just the current line.
становится:
# Hey, this header isn't really there!
Be careful with what starts the original line. Also, the
`wrap_lines` command **targets the entire paragraph**, not just
the current line.
Поскольку операция выполняется так быстро, у вас не должно быть особых проблем с отслеживанием причин ошибок, с которыми вы сталкиваетесь, начиная с них и творчески избегая их. У Sublime Text обычно нет никаких проблем с смешиванием комментариев и не комментариев в коде, поэтому, если вам повезет, вам никогда не придется беспокоиться об этом!