2017-05-31 57 views
0

我有gedit和Manage Snippets插件,我想創建一個片段來評論一行(很簡單,只需添加:「#$ GEDIT_CURRENT_LINE」,例如python代碼)但是,如果該行被評論過,我想取消註釋。 是否有一個特殊的語法,我不知道,如果在$ GEDIT_CURRENT_LINE上有一個條件,使用python或C++語句?因爲代碼片段上的任何代碼只能打印。使用命令到Gedit的管理片段插件

回答

0

好吧,其實,我只是找到一個辦法來做到這一點。 要在管理代碼段插件上使用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:這裏摘錄發表評論/取消註釋所有蟒蛇選定行(而不是僅僅作爲前):

$< 
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) 
>