Как закомментировать несколько строк в Pluma (форк Gedit)?

Есть ли способ закомментировать блок кода в Pluma (видимо, форк Gedit)? Например, в python я хотел бы выбрать блок кода:

def foo(bar):
    return bar * 2

И закомментируйте это:

#    def foo(bar):
#        return bar * 2

person atman    schedule 30.05.2013    source источник
comment
Пробовали ли вы предложение в stackoverflow.com/questions/7649626/block- комментирование в gedit   -  person Blutack    schedule 30.05.2013


Ответы (5)


На основании М.О. Kitzka, я использовал следующий компактный фрагмент:

$<
lines = $PLUMA_SELECTED_TEXT.split("\n");
output = "";
for line in lines:
    output += "#" + line + "\n";

return output
>

Вы можете использовать любой код Python внутри окна менеджера сниппетов.

person altroware    schedule 15.02.2014

  1. активировать плагин сниппетов
  2. добавьте фрагмент, который может выглядеть так: "# $PLUMA_SELECTED_TEXT"

для получения дополнительной информации: http://www.tuxradar.com/content/save-time-gedit-snippets

person bAnEEd_meeY-dL0    schedule 18.11.2013

Основываясь на предыдущем ответе bAnEEd_meeY-dL0, вот что я придумал.

  1. активировать плагин сниппетов
  2. добавить фрагмент, который выглядит так,

    $<
    selected_txt = $PLUMA_SELECTED_TEXT
    output = "" 
    for line in selected_txt.split("\n"):
        line = "#" + line
        output = output + line+ "\n" 
    
    return output
    >
    
  3. Не забудьте заполнить раздел «Активация». Вам не нужно заполнять все. Я поставил Ctrl + M в ярлыке.

Примечание. Это прокомментирует несколько строк, но добавит дополнительную строку в самой нижней строке.

person M.O. Kitzka    schedule 23.11.2013

Основываясь на предыдущих ответах и ​​некоторых исследованиях, я придумал более «избранную» версию фрагмента :-)

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

from requests import post # cursor currently here or this line selected
from collections import defaultdict

Нажмите CTRL+М

#from requests import post
from collections import defaultdict

Снова раскомментируйте его, нажав CTRL+M при выборе или наведя курсор на закомментированную строку.

Комментируйте несколько строк и переключайте комментарии к блокам, например:

#from requests import post # both lines selected
from collections import defaultdict

Нажмите CTRL + М

from requests import post # both lines selected
#from collections import defaultdict

Вы всегда можете раскомментировать CTRL+M, когда строка закомментирована. А вот Фрагмент:

$<
lines = $PLUMA_SELECTED_TEXT.split("\n")
if lines == ['']:
    # Already commented line ...
    if $PLUMA_CURRENT_LINE.startswith("#"):
        return $PLUMA_CURRENT_LINE[1:]
    else:   # ... then uncomment it
        return "#" + $PLUMA_CURRENT_LINE
else:
    output = "";
    for line in lines:
        if line.startswith("#"):
            output += line[1:] + "\n"
        else:
            output += "#" + line + "\n"
    return output.rstrip()
>
person Eduardo    schedule 23.04.2015

Это мое решение. Функции:

  • Переключить комментирование/раскомментирование кода
  • Сохраняет отступ при комментировании/раскомментировании
  • Если текст не выделен, комментирует/раскомментирует текущую строку

Наслаждаться.

$<
import re

def get_lines():
    selected = $PLUMA_SELECTED_TEXT
    if selected:
        return selected
    else:
        return $PLUMA_CURRENT_LINE

def toggle(selected_txt):
    lines = [] 
    for line in selected_txt.split("\n"):
        if not line:
            lines.append(line)
            continue
        try:
            spaces, content = re.findall(r'^\s+|.+', line)
        except:
            spaces = ""
            content = line

        if content.startswith("#"):
            lines.append("{}{}".format(spaces, content[1:]))
        else:
            lines.append("{}#{}".format(spaces, content))

    return "\n".join(lines)

return toggle(get_lines())
>
person innisfree    schedule 16.01.2019