2017-05-31 11 views
0

私はgeditとManage Snippetsプラグインを持っていますので、簡単にコメントを付けるためにスニペットを作成したいと思います(簡単に追加できます:例えば#$ GEDIT_CURRENT_LINE )しかし、行がコメントされている場合は、コメントを外したいと思います。 $ GEDIT_CURRENT_LINEに条件付きifのようなPythonやC++の文を使用する特別な構文はありますか?スニペットに書かれたコードのいずれかが印刷されるだけなので。GeditのManage Snippetsプラグインにコマンドを使用する

答えて

0

実際、私はちょうどそれを行う方法を見つける。 bashコマンドをmanage snippetsプラグインに使用するには、`を使用してください。私の場合は例えば 、行の最初のcaracterが何であるかを知っている:`${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`` 

このスニペットは、行をコメントまたはそれが今までにコメントされている場合、それをアンコメントします。 (ちょうどメモ帳++と同じように)。

編集:それを書き直すには、新しい変数を作成する必要があります:GEDIT_CURRENT_LINE_STR=$GEDIT_CURRENT_LINE;。その新しい変数がなければ、現在の行テキストはコマンドとして解釈され、エラーのために行を消去するだけです。 (私は上記のコードを更新)

EDIT2:

$< 
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) 
> 
:コメント解除/パイソン(だけでなく、上の以前のように)と、選択したすべての行をコメントするここスニペット
関連する問題