如何从 stdin 接收文本到 sublimetext 编辑器?在 vim 中它是这样工作的:
echo "potato potato potato" | vim -
同样的事情也适用于 gedit,创建一个包含内容的新文档。
Sublimetext 似乎刚刚开始在新选项卡中编辑一个名为“-”的文件,是否有其他一些 shell 技巧可以工作?
最佳答案
假设 Sublime 仍然不支持打开 STDIN,一个直接的解决方案是将输出转储到一个临时文件,在 sublime 中打开该文件,然后删除该文件。假设您在 bin 目录中创建了一个名为 tosubl
的脚本,如下所示:
#!/bin/bash
TMPDIR=${TMPDIR:-/tmp} # default to /tmp if TMPDIR isn't set
F=$(mktemp $TMPDIR/tosubl-XXXXXXXX)
cat >| $F # use >| instead of > if you set noclobber in bash
subl $F
sleep .3 # give subl a little time to open the file
rm -f $F # file will be deleted as soon as subl closes it
然后你可以通过做这样的事情来使用它:
$ ps | tosubl
但更有效和可靠的解决方案是使用 Process Substitution如果你的 shell 支持它(它可能支持)。这消除了临时文件。这是 bash:
tosubl() {
subl <(cat)
}
echo "foo" | tosubl
我很确定您可以以某种方式删除该函数中 cat
的使用,因为它会将位从 stdin 冗余地铲到 stdout,但我不知道在该上下文中这样做的语法此刻。
关于linux - 如何将输入管道输入到 linux 上的 sublimetext?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21125094/