[英]Can I write some output to the current document and some to shell output?
我正在使用gedit並嘗試將其摔入真正的IDE中。 我想要的是映射ctrl shift | 當文件類型為“ text / html”時運行我的tidy
工具,當文件類型為“ text / x-python”時運行我的autopep8
工具。
事實證明(我認為這是一個錯誤),gedit不在乎您指定的文件類型。 如果您有組合鍵設置,則無論文件類型是否匹配,它都會運行一個工具。 相關,但可能不是錯誤,我只能將鍵盤快捷鍵設置為一個外部工具。
因此,我編寫了一個可在ctrl shift上運行的外部工具。 並運行autopep8
如果該文件是Python和tidy
,如果該文件是HTML:
#!/bin/sh
# [Gedit Tool]
# Save-files=document
# Shortcut=<Primary><Shift>bar
# Output=replace-document
# Name=Tidy by Filetype
# Applicability=all
# Input=document
if [ $GEDIT_CURRENT_DOCUMENT_TYPE = "text/x-python" ]; then
autopep8 - -v -a
elif [ $GEDIT_CURRENT_DOCUMENT_TYPE = "text/html" ]; then
#-i auto indents, -w 80 wrap at 80 chars, -c replace font tags w/CSS
exec tidy -utf8 -i -w 80 -c "$GEDIT_CURRENT_DOCUMENT_NAME"
elif [ $GEDIT_CURRENT_DOCUMENT_TYPE = "text/css" ]; then
#TK CSS tidy
else
echo "This seems to be " $GEDIT_CURRENT_DOCUMENT_TYPE " I don't know how to tidy that."
fi
倒數第二行是讓我傷心的那行。 如果我不為過去定義的任何行動else
它只是刪除我現有的文檔。 如果我運行ctrl shift | 並且文件類型不是我要考慮的一種,我希望它向外殼輸出報告文件類型,而不是用
這似乎是application / x-shellscript我不知道如何整理。
有沒有一種方法可以編寫我的工具,以便我可以將一些輸出寫入外殼程序並將某些輸出寫入文檔?
沒有嘗試使gedit變得更有用的經驗,我確實發現了這一點: https ://wiki.gnome.org/Apps/Gedit/Plugins/ExternalTools?action=AttachFile&do = view&target=target-external-tools-manager-with-gedit- 3.png
這里的關鍵構造是
echo "..." > /dev/stderr
如果mime類型不匹配,至少可以阻止您破壞文件的內容,但是我不確定文件的打印位置(希望在合理的地方)。
編輯(以獲得更完整的答案):
您還需要添加cat $GEDIT_CURRENT_DOCUMENT_NAME
目錄,以使用其自身替換文件內容。 @ markku-k指出了這一點(謝謝!)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.