我可以将一些输出写入当前文档,将一些输出写入 shell 输出吗?



我正在使用gedit并试图将其摔跤到真正的IDE中。我想要的是映射ctrlshift|,在文件类型为"text/html"时运行我的tidy工具,在文件类型为"text/x-python"时运行我的autopep8工具。

事实证明(我认为这是一个错误),gedit 并不关心您指定的文件类型。如果您设置了组合键,则无论文件类型是否匹配,它都将运行工具。相关,但可能不是错误,我只能将键盘快捷键设置为一个外部工具。

所以我写了一个在ctrlshift|上运行的外部工具,如果文档是Python,则运行autopep8如果文档是HTML,则运行tidy

#!/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定义任何操作,它只会删除我的现有文档。如果我运行ctrlshift|并且文件类型不是我已经考虑过的文件类型,我希望它将文件类型报告给shell输出,而不是将文档内容替换为

这似乎是应用程序/x-shellscript我不知道如何整理 那。

有没有办法编写我的工具,以便将一些输出写入 shell,将一些输出写入文档?

没有尝试使gedit更可用的经验,我确实发现了这个: https://wiki.gnome.org/Apps/Gedit/Plugins/ExternalTools?action=AttachFile&do=view&target=external-tools-manager-with-gedit-3.png

这里的关键结构是

echo "..." > /dev/stderr

如果 mime 类型不匹配,至少这应该可以阻止您破坏文件的内容,但我不确定它会在哪里打印出来(希望在某个理智的地方)。

编辑(以获得更完整的答案):

您还需要cat $GEDIT_CURRENT_DOCUMENT_NAME将文件内容替换为自身。 @markku-k指出了这一点(谢谢!

相关内容

  • 没有找到相关文章

最新更新