Python 确定没有扩展名的文件的文件类型

Python 确定没有扩展名的文件的文件类型,python,vim,file-type,pygments,Python,Vim,File Type,Pygments,我想使用pygmentize突出显示一些没有扩展名的脚本文件(python/bash/…)。但是pygmentize要求我使用-l指定lexer。它不会自动从内容中识别文件类型 我手头有以下选项,但现在都不起作用: 使用文件-b--mime类型。但是这个命令输出的是x-python和x-shellscript,而不是python和bash,我不知道规则 使用vim-e-c'echo&ft|q'读取_文件。对于任何具有或不具有文件扩展名的文件,vim都有一种猜测文件类型的机制。但它不起作用。因为输

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

我手头有以下选项,但现在都不起作用:

  • 使用
    文件-b--mime类型
    。但是这个命令输出的是
    x-python
    x-shellscript
    ,而不是
    python
    bash
    ,我不知道规则
  • 使用
    vim-e-c'echo&ft|q'读取_文件
    。对于任何具有或不具有文件扩展名的文件,vim都有一种猜测文件类型的机制。但它不起作用。因为输出进入vim窗口并在
    q
    后消失 我能做什么


    @Samborski的方法在正常情况下运行良好,但在python
    子流程中不起作用。检查输出,因为没有分配pts。如果您使用
    nvim
    ,您可以使用以下更简单的方法:

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

    HOME=\nvim--headless-es文件您可以通过以下方式使用vim:

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

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

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

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

    它只是将命令构造为字符串串联在shell中运行。

    Python文件、bash文件等都是文本文件,打算用不同的解释器打开。您可以通过分析文件并查找某些结构和关键字来猜测要使用的正确解释器,但这充其量只能是猜测。当然,这应该由文件的内容决定。我的问题是怎么做<代码>vim
    有很多代码来处理此问题<代码>文件
    也可以这样做,但它的输出不是pygmentizePython文件、bash文件等可以直接使用的内容。这些文件都是文本文件,打算用不同的解释器打开。您可以通过分析文件并查找某些结构和关键字来猜测要使用的正确解释器,但这充其量只能是猜测。当然,这应该由文件的内容决定。我的问题是怎么做<代码>vim有很多代码来处理此问题<代码>文件也可以这样做,但它的输出不是Pygmentiziz可以直接使用的东西。这一个可以工作,但它会导致屏幕闪烁。有什么办法可以防止吗?我发现闪存是由
    .vim
    中的插件引起的。如何禁用这些插件您可以创建另一个
    .vimrc
    文件,并通过指定
    -u
    标记来使用它,而不是默认的文件。它是
    。vim
    而不是
    。vimrc
    。使用它,我需要修改vimrc中的
    rtp
    。我刚刚找到了另一个更好的方法,那就是使用
    HOME=\vim-c…
    来伪造HOME dir,这样vim就无法找到我自己的设置。你介意在你的回答中加上这一部分吗?我接受你的。谢谢这里还有一个可用的
    --noplugin
    标志这一个有效,但会导致屏幕闪烁。有什么办法可以防止吗?我发现闪存是由
    .vim
    中的插件引起的。如何禁用这些插件您可以创建另一个
    .vimrc
    文件,并通过指定
    -u
    标记来使用它,而不是默认的文件。它是
    。vim
    而不是
    。vimrc
    。使用它,我需要修改vimrc中的
    rtp
    。我刚刚找到了另一个更好的方法,那就是使用
    HOME=\vim-c…
    来伪造HOME dir,这样vim就无法找到我自己的设置。你介意在你的回答中加上这一部分吗?我接受你的。谢谢这里还有
    --noplugin
    标志可用