确定不带扩展名的文件的文件类型

时间:2019-01-15 04:49:16

标签: python vim file-type pygments

我想使用pygmentize突出显示一些没有扩展名的脚本文件(python / bash / ...)。但是pygmentize要求我使用-l指定词法分析器。它不会自动从内容中识别文件类型。

我手头有以下选项,但现在都无法使用:

  1. 使用file -b --mime-type。但是此命令输出x-pythonx-shellscript而不是pythonbash,但我不知道规则
  2. 使用vim -e -c 'echo &ft|q' the_file。对于任何带有或不带有文件扩展名的文件,vim都有一种猜测文件类型的机制。但这是行不通的。由于输出进入vim窗口,并在q之后消失。

我该怎么办?


@Samborski的方法在正常情况下可以正常工作,但由于未分配pts,因此在python subprocess.check_output中不起作用。如果使用nvim,则可以使用以下更直接的方法:

HOME=_ nvim --headless -es file <<EOF
call writefile([&ft], "/dev/stdout")
EOF

1 个答案:

答案 0 :(得分:2)

您可以通过以下方式使用vim:

vim -c ':silent execute ":!echo " . &ft . " > /dev/stdout"' -c ':q!' the_file

它只是构造命令以字符串串联的形式在shell中运行。