В Sublime Text 3, Edit->Comment->Toggle Comment (команда - / на Mac) закомментирует текущий выбор (или текущую строку) или раскомментирует его, в зависимости от его текущего состояния. Это делается путем вставки пробела и начального символа (символов) комментария в начале текущей строки, в столбце, в котором начинается текущая строка, сохраняя начальный пробел. Например, комментируя четвертую строку этого:

#***************************************************************************
sub invoke
{
    my($self) = @_;

приведет к этому:

#***************************************************************************
sub invoke
{
    # my($self) = @_;

Мне бы очень понравилось, если бы он выровнял по левому краю символ комментария, например так:

#***************************************************************************
sub invoke
{
#   my($self) = @_;

Есть ли способ сделать это? Спасибо!

1 ответ1

2

Предупреждение:

Для этого нужно возиться с одним из основных файлов Sublime. Не продолжайте, если вам это неудобно.


Тем не менее, изменения, которые вы будете вносить, не столь значительны и легко обратимы. Не волнуйся, я сделаю это легко.

Первое, что вам нужно сделать, это установить Package Control, если вы этого еще не сделали. Затем установите PackageResourceViewer. Откройте командную палитру, введите prv чтобы вызвать параметры PackageResourceViewer: и выберите PackageResourceViewer: Open Resource . Прокрутите немного вниз, выберите Default , затем прокрутите немного больше и выберите comment.py чтобы открыть файл в Sublime. Теперь вы можете нажать Esc, чтобы закрыть командную палитру. Первые два определения функций выглядят так:

import sublime, sublime_plugin

def advance_to_first_non_white_space_on_line(view, pt):
    while True:
        c = view.substr(pt)
        if c == " " or c == "\t":
            pt += 1
        else:
            break

    return pt

def has_non_white_space_on_line(view, pt):
    while True:
        c = view.substr(pt)
        if c == " " or c == "\t":
            pt += 1
        else:
            return c != "\n"

Сначала закомментируйте все строки advance_to_first_non_white_space_on_line() кроме последнего оператора return :

def advance_to_first_non_white_space_on_line(view, pt):
    # while True:
    #     c = view.substr(pt)
    #     if c == " " or c == "\t":
    #         pt += 1
    #     else:
    #         break

    return pt

Продолжая has_non_white_space_on_line() , закомментируйте все строки:

def has_non_white_space_on_line(view, pt):
    # while True:
    #     c = view.substr(pt)
    #     if c == " " or c == "\t":
    #         pt += 1
    #     else:
    #         return c != "\n"

Затем создайте новую строку после оператора return , сделайте отступ в 4 пробела и вставьте следующее:

return view.substr(pt) != "\n"

чтобы все это выглядело так:

def has_non_white_space_on_line(view, pt):
    # while True:
    #     c = view.substr(pt)
    #     if c == " " or c == "\t":
    #         pt += 1
    #     else:
    #         return c != "\n"
    return view.substr(pt) != "\n"

И это все! Сохраните файл, и просто для удовольствия попробуйте закомментировать некоторые строки в нем - вы увидите, что все символы # комментариев находятся в столбце 1.

Теперь это, очевидно, изменит поведение для всех языков, не только для Python, так что будьте к этому готовы. Чтобы отменить изменения, просто замените два определения функций на определения из первого блока кода выше. О, чтобы вернуться к файлу снова, вам не нужно проходить через PackageResourceViewer. Вместо этого выберите « Preferences -> Browse Packages... (или « Sublime Text -> Preferences -> Browse Packages... если вы работаете в OS X), чтобы открыть папку « Packages » в файловом менеджере операционной системы (Windows Explorer, Finder, Наутилус и т.д.). В Packages/Default вы найдете comment.py , так же, как вы его изменили. Если вы хотите вернуться к тому, что было раньше, просто удалите этот файл, и все будет готово (оригинал хранится в другом месте, но перезаписывается, когда в Packages существует файл с одинаковым именем).

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .