从 Gedit 使用命令到 Manage Snippets 插件

Use commands onto the Manage Snippets plugin from Gedit

我有 gedit 和 Manage Snippets 插件,我想创建一个片段来注释一行(这很简单,只需添加:“# $GEDIT_CURRENT_LINE”,对于 python 的代码示例)但是,如果该行曾经被注释过,我想取消注释它。 是否有特殊的语法可以使用,我不知道, python 或 c++ 语句,如 if 条件 $GEDIT_CURRENT_LINE ?因为写在片段上的任何代码都只会被打印出来。

好的,实际上,我只是找到了一种方法。 要在管理片段插件上使用 bash 命令,只需使用 `。 例如,在我的例子中,要知道行中的第一个字符是什么:`${GEDIT_CURRENT_LINE:0:1}` 并且使用 if 语句:

``if [ ${GEDIT_CURRENT_LINE:0:1} == "#" ]; then  echo ${GEDIT_CURRENT_LINE:2}; else GEDIT_CURRENT_LINE_STR=$GEDIT_CURRENT_LINE; echo "# $GEDIT_CURRENT_LINE_STR"; fi``

此代码段将对该行进行注释或取消注释(如果它曾经被注释过)。 (就像 Notepad++ 一样)。

编辑:您必须使用要重写的行创建一个新变量:GEDIT_CURRENT_LINE_STR=$GEDIT_CURRENT_LINE;。如果没有这个新变量,当前行文本可以被解释为命令,然后由于错误而删除该行。 (我更新了上面的代码)

Edit2 :这里是 comment/uncomment 所有带有 python 的选定行的片段(而不仅仅是像以前那样):

$<
AllLines = $GEDIT_SELECTED_TEXT.split('\n')
if AllLines == ['']:
    AllLines = $GEDIT_CURRENT_LINE.split('\n')
NewLines = []
for line in AllLines:
    if line[0:2] == '# ':
        NewLines += [line.replace('# ', '')]
    elif line[0] == '#':
        NewLines += [line.replace('#', '')]
    elif line[0] != '#':
        NewLines += ['# ' + line]
return '\n'.join(NewLines)
>