Como posso obter uma lista dos nomes de tipos de arquivos que o vim conhece atualmente?
Quero poder fazer isso para que, quando o vim não detecte automaticamente um tipo de arquivo, eu possa experimentar alguns dos tipos de arquivos que o vim sabe que podem ser semelhantes e ver se eles fornecem realce razoável de sintaxe.
Eu sei que os arquivos vimscript que lidam com tipos de arquivos são colocados no ftplugin
diretório por convenção, mas eles não precisam ser (não tenho certeza, mas não acho que os arquivos vimscript no ftplugin
diretório sejam especiais), então eu quero apenas pergunte ao vim quais tipos de arquivos ele conhece, independentemente de como aprendeu sobre eles.
syntax-highlighting
Praxeolitic
fonte
fonte
:setfiletype
(ou seja,Tab
após um espaço). Não tenho certeza se é a lista completa ou como capturá-la em algum buffer / arquivo.<c-d>
vez de<tab>
para listar conclusões.Respostas:
Solução Simples
Digite
:setfiletype
(com um espaço depois) e pressioneCtrl-d
.Veja
:help cmdline-completion
para mais informações sobre o preenchimento automático na linha de comando do vim.Solução complicada
Esta solução usa a
'runtimepath'
opção de obter todos os diretórios de sintaxe disponíveis e, em seguida, busca uma lista dos arquivos vimscript nesses diretórios com suas extensões removidas. Esta pode não ser a maneira mais segura de fazê-lo, portanto, as melhorias são bem-vindas:Você pode usar esta função da maneira que desejar, como imprimir todos os valores da lista. Você poderia fazer isso assim:
Observe que isso provavelmente pode ser compactado um pouco, é assim para facilitar a leitura. Não explicarei todas as funções e comandos usados aqui, mas aqui estão todas as páginas de ajuda para eles:
:help 'runtimepath'
:help :let
:help :let-&
:help split()
:help :for
:help expr-.
:help :if
:help isdirectory()
:help glob()
:help fnamemodify()
:help add()
:help uniq()
:help sort()
fonte
set filetype<space><c d>
, ele me mostra uma lista, mas o html não está na lista. Java não está na lista. Como mostro nomes de tipos de arquivos no sentido de tipos de arquivos que correspondem às configurações de formatação da sintaxe?:setfiletype
sem o espaço típico entre "set" e "filetype". Você pode encontrar mais informações com:help :setfiletype
e:help ftdetect
.:setfiletype ht<Ctrl+D>
para listar o tipo de arquivo começando com ht, que filtra resultados indesejados. :)Se sua versão do vim é recente o suficiente (v7.4.2011 +), você pode solicitar tipos de arquivos conhecidos com a função que agora podemos usar para ajudar a definir o preenchimento automático manual:
getcompletion()
Se você deseja restringir a lista a tipos de arquivos começando com a
'c'
, chamee assim por diante.
Nota: ao contrário das soluções que analisam os nomes de arquivos e diretórios
$VIMRUNTIME/{syntax,filetype}/
, esta solução também analisa'runtimepath'
. Tanto quanto eu entendo, ele não vê novos tipos de arquivos definidos / registrados em tempo real comset ft=foobar
, nem após comandos automáticos.fonte
Você também pode imprimir todos os tipos de arquivos no terminal executando os 2 comandos a seguir:
1
2)
O primeiro comando simplesmente navega para o caminho do tempo de execução do vim (para mim era / usr / share / vim / vim80 ).
O segundo comando lista todos os nomes de tipo de arquivo nas duas pastas em que o vim armazena as definições de tipo de arquivo.
Atualizar
Melhorias sugeridas para os dois comandos do muru que oferecem:
1
2)
fonte
tr
para converter novas linhas em nulo apenas para convertê-lo de volta no próximo comando, processe a substituição quando um agrupamento de comandos simples for suficiente. Eu sugiro algo como:find syntax ftplugin -iname '*.vim' -exec basename -s .vim {} + | sort -u
vim -Nesc '!echo $VIMRUNTIME' -c qa
, Eu acho que.printf
é um builtin):f=({ftplugin,syntax}/*.vim) && f=(${f[@]##*/}) && printf "%s\n" "${f[@]%%.*}" | sort -u
. Consulte "Expansão de parâmetros" na página do manual Bash para obter uma explicação dos hieróglifos.bash
, que 'não é um plug-in de tipo real ... e obtém o efeito do tipo de arquivo "sh"'Tente ver em $ VIMRUNTIME / sintaxe. Use: echo $ VIMRUNTIME para saber seu valor. No meu computador, $ VIMRUNTIME / syntax era / usr / share / vim / vim81 / syntax. Possui todos os arquivos de sintaxe.
Se você tem um vim com GUI, também pode usar o menu Sintaxe para obter todos os tipos de arquivos suportados.
fonte