Python 如何在Pluma(Gedit fork)中注释掉多行?

Python 如何在Pluma(Gedit fork)中注释掉多行?,python,comments,editor,text-editor,gedit,Python,Comments,Editor,Text Editor,Gedit,有没有一种方法可以注释掉Pluma(Gedit)中的代码块? 例如,在python中,我想选择一段代码: def foo(bar): return bar * 2 评论一下: # def foo(bar): # return bar * 2 激活代码片段插件 添加类似于“#$PLUMA_SELECTED_TEXT”的代码段 有关更多信息: 激活代码片段插件 添加类似于“#$PLUMA_SELECTED_TEXT”的代码段 有关更多信息: 根据贝内德·米伊·dL0

有没有一种方法可以注释掉Pluma(Gedit)中的代码块? 例如,在python中,我想选择一段代码:

def foo(bar):
    return bar * 2
评论一下:

#    def foo(bar):
#        return bar * 2
  • 激活代码片段插件
  • 添加类似于“#$PLUMA_SELECTED_TEXT”的代码段
  • 有关更多信息:

  • 激活代码片段插件
  • 添加类似于“#$PLUMA_SELECTED_TEXT”的代码段
  • 有关更多信息:

    根据贝内德·米伊·dL0早些时候的回答,以下是我的想法

  • 激活代码片段插件
  • 添加如下所示的代码段:

    $<
    selected_txt = $PLUMA_SELECTED_TEXT
    output = "" 
    for line in selected_txt.split("\n"):
        line = "#" + line
        output = output + line+ "\n" 
    
    return output
    >
    
    $<
    选定的文本=$PLUMA\u选定的文本
    output=“”
    对于选定的_txt.split(“\n”)中的行:
    line=“#”+行
    输出=输出+行+“\n”
    返回输出
    >
    
  • 别忘了填写“激活”部分。你不需要填满所有的东西。我把Ctrl+M放在捷径上


  • 注意:这将注释多行,但在最底行中添加一行额外内容

    根据贝内德·米伊·dL0早些时候的回答,以下是我的想法

  • 激活代码片段插件
  • 添加如下所示的代码段:

    $<
    selected_txt = $PLUMA_SELECTED_TEXT
    output = "" 
    for line in selected_txt.split("\n"):
        line = "#" + line
        output = output + line+ "\n" 
    
    return output
    >
    
    $<
    选定的文本=$PLUMA\u选定的文本
    output=“”
    对于选定的_txt.split(“\n”)中的行:
    line=“#”+行
    输出=输出+行+“\n”
    返回输出
    >
    
  • 别忘了填写“激活”部分。你不需要填满所有的东西。我把Ctrl+M放在捷径上


  • 注意:这将注释多行,但在最底行中添加一行额外内容

    根据M.O.Kitzka的回答, 我使用了以下压缩代码段:

    $<
    lines = $PLUMA_SELECTED_TEXT.split("\n");
    output = "";
    for line in lines:
        output += "#" + line + "\n";
    
    return output
    >
    
    $<
    lines=$PLUMA_SELECTED_TEXT.split(“\n”);
    输出=”;
    对于行中的行:
    输出+=“#”+行+“\n”;
    返回输出
    >
    

    您可以在snippet manager的窗口中使用任何python代码。

    基于M.O.Kitzka的答案, 我使用了以下压缩代码段:

    $<
    lines = $PLUMA_SELECTED_TEXT.split("\n");
    output = "";
    for line in lines:
        output += "#" + line + "\n";
    
    return output
    >
    
    $<
    lines=$PLUMA_SELECTED_TEXT.split(“\n”);
    输出=”;
    对于行中的行:
    输出+=“#”+行+“\n”;
    返回输出
    >
    

    您可以在snippet manager的窗口中使用任何python代码。

    基于前面的答案和一些研究,我提出了一个更具“特色”的代码片段版本:-)

    当当前行被选中或有光标时,对其进行注释,例如:

    from requests import post # cursor currently here or this line selected
    from collections import defaultdict
    
    按CTRL+M组合键

    #from requests import post
    from collections import defaultdict
    
    在选择或光标位于注释行时按CTRL+M再次取消注释

    注释多行并切换块上的注释,例如:

    #from requests import post # both lines selected
    from collections import defaultdict
    
    按CTRL+M组合键

    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()
    >
    
    $<
    lines=$PLUMA\u SELECTED\u TEXT.split(“\n”)
    如果行==['']:
    #已注释行。。。
    如果$PLUMA_CURRENT_LINE.startswith(“#”):
    返回$PLUMA\u当前\u行[1:]
    其他:#。。。然后取消注释它
    返回“#”+$PLUMA_当前_行
    其他:
    输出=”;
    对于行中的行:
    如果line.startswith(“#”):
    输出+=行[1:][+“\n”
    其他:
    输出+=“#”+行+“\n”
    返回输出。rstrip()
    >
    
    根据前面的答案和一些研究,我提出了一个更具“特色”的片段版本:-)

    当当前行被选中或有光标时,对其进行注释,例如:

    from requests import post # cursor currently here or this line selected
    from collections import defaultdict
    
    按CTRL+M组合键

    #from requests import post
    from collections import defaultdict
    
    在选择或光标位于注释行时按CTRL+M再次取消注释

    注释多行并切换块上的注释,例如:

    #from requests import post # both lines selected
    from collections import defaultdict
    
    按CTRL+M组合键

    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()
    >
    
    $<
    lines=$PLUMA\u SELECTED\u TEXT.split(“\n”)
    如果行==['']:
    #已注释行。。。
    如果$PLUMA_CURRENT_LINE.startswith(“#”):
    返回$PLUMA\u当前\u行[1:]
    其他:#。。。然后取消注释它
    返回“#”+$PLUMA_当前_行
    其他:
    输出=”;
    对于行中的行:
    如果line.startswith(“#”):
    输出+=行[1:][+“\n”
    其他:
    输出+=“#”+行+“\n”
    返回输出。rstrip()
    >
    
    这是我的解决方案。特点:

    • 切换代码注释/取消注释
    • 注释/取消注释时保留缩进
    • 如果未选择文本,则注释/取消注释当前行
    享受

    $<
    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())
    >
    
    $<
    进口稀土
    def get_行():
    选定=$PLUMA\u选定的\u文本
    如果选择:
    返回选定的
    其他:
    返回$PLUMA\u当前\u行
    def切换(选定的文本):
    行=[]
    对于选定的_txt.split(“\n”)中的行:
    如果不是直线:
    行。追加(行)
    持续
    尝试:
    空格,content=re.findall(r'^\s++.+',行)
    除:
    空格=“”
    内容=行
    如果content.startswith(“#”):
    lines.append(“{}{}.”格式(空格,内容[1:]))
    其他:
    行。追加(“{}}{}”。格式(空格、内容))
    返回“\n”。连接(行)
    返回切换(获取线()
    >
    
    这是我的解决方案。特点:

    • 切换代码注释/取消注释
    • 注释/取消注释时保留缩进
    • 如果未选择文本,则注释/取消注释当前行
    享受

    $<
    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())
    >
    
    $<
    进口稀土
    def get_行():
    选定=$PLUMA\u选定的\u文本
    如果选择:
    返回选定的
    其他:
    返回$PLUMA\u当前\u行
    def切换(选定的文本):
    行=[]
    对于选定的_txt.split(“\n”)中的行:
    如果不是直线:
    行。追加(行)
    持续
    尝试:
    空格,content=re.findall(r'^\s++.+',行)
    除:
    空格=“”
    内容=行
    如果content.startswith(“#”):
    lines.append(“{}{}.”格式(空格,内容[1:]))
    其他:
    行。追加(“{}}{}”。格式(空格、内容))
    返回“\n”。连接(行)
    返回切换(获取线()
    >
    
    您是否尝试过我们的建议