Como visualizar tags javascript no vim usando tagbar + jsctags + tern_for_vim + ctags_exuberant?

7

Estou escrevendo código javascript usando o vim e gosto muito de ter uma visão geral do arquivo javascript atual que estou editando. Acho que o tagbar é o plugin popular para esse fim. E em seu wiki, para que o javascript funcione, ele recomenda que o jsctags dependa do Tern.

Agora

  1. Eu instalei os plugins do vim: tagbar e tern_for_vim.
  2. Instalei ctags exuberantes e coloquei a lixeira no caminho
  3. Eu instalei o jsctags

Abro um arquivo js no vim e abro a visualização de tópicos da barra de tags, mas não há tags sendo exibidas.

Então, eu tento executar jsctags diretamente em um arquivo js na linha de comando, ainda assim, nada é gerado.

alguém conseguiu fazer essa combinação funcionar com sucesso? Alguém pode compartilhar alguns pensamentos?

Aaron Shen
fonte
4
Então, qual é a sua pergunta exatamente? Você seguiu algumas instruções em algum lugar (onde o que exatamente você fez?) E algo que não funciona como você está esperando (o quê?) (O que você esperava?)
Martin Tournoij
Parte do processo que Aaron não mencionou está na verdade gerando o arquivo de tags. Isso pode ser possível executando algo no shell:jsctags *.js **/*.js
joeytwiddle
Sua pergunta é melhor após a edição ;-) Mas acho que essa pergunta provavelmente obteria melhores respostas se você incluísse um arquivo (pequeno) vimrc e um arquivo JS (pequeno) JS que demonstrem claramente o problema. Isto reduziria o esforço exigido pelo respondente potencial para começar a investigar o seu problema ;-)
Martin Tournoij
11
@joeytwiddle O plug-in Tagbar usa as ferramentas externas para criar seu próprio arquivo de tags. Você não precisa fazer isso manualmente na linha de comando.
Rich
2
Revirei seu Rev 4 → 3. Poste a resolução como uma resposta automática.
200_success

Respostas:

4
:g/func/#

fornece um esboço acionável do buffer JavaScript atual sem instalar nenhum plug-in de terceiros ou exigir nenhum programa externo.

Use func\|varpara incluir declarações de variáveis.

romainl
fonte
O que você quer dizer com "acionável"? Ou, mais especificamente, que ações posso tomar e como?
Joeytwiddle 16/03/2015
Suponho que digitar :[line_number]é a ação óbvia. Também posso arrancar a última linha com /you excluir todos eles /d. (Eu apenas tropecei no Santo Graal.) Existe alguma maneira de arrancar todas as linhas?
Joeytwiddle 17/03/2015
@joeytwiddle, sim, :23<CR>é o óbvio. Você pode usar :g//y Apara puxar todas as linhas da saída para registrar a.
Romainl 17/03/2015
1

Desenvolvi um conjunto de regras de regex do CTAGS para JavaScript e CoffeeScript. Minhas regras incluem testes de unidade, então eu acho que eles são mais confiáveis ​​do que a maioria.

Aqui está o meu repositório git, que deve estar mais atualizado: https://github.com/winstonwolff/ctags-javascript-coffeescript

E aqui estão as regras que eu uso para escrever este post:

--languages=-JavaScript
--langdef=js
--langmap=js:.js
--regex-js=/^var[ \t]+([a-zA-Z0-9._$]+) = \[/\1/a,array/
--regex-js=/^var[ \t]+([a-zA-Z0-9._$]+) = \{/\1/o,object/
--regex-js=/^var[ \t]+([a-zA-Z0-9._$]+)[ \t]*=[^{\[]*$/\1/r,var/

--regex-js=/^var[ \t]+([A-Za-z0-9._$]+)[ \t]*=[ \t]*[A-Za-z0-9_$]+.extend/\1/f,function/
--regex-js=/^[ \t]*([A-Za-z0-9_$]*\.)*([A-Za-z0-9_$]+)[ \t]*[:=][ \t]*function/\2/f,function/
--regex-js=/^[ \t]*function[ \t]*([A-Za-z0-9_$]+)[ \t]*\(/\1/f,function/
--regex-js=/^[ \t]*var[ \t]+([A-Za-z0-9_$]*\.)*([A-Za-z0-9_$]+)[ \t]*=[ \t]function/\2/f,function/

--regex-js=/(jQuery|\$)\([ \t]*([^ \t]*)[ \t]*\)\.bind\([ \t]*['"](.*)['"]/\2.\3/f,function/

--regex-js=/^[ \t]*describe[ \t]*\([ \t]*["'](.*)["']/\1/f,function/
--regex-js=/^([ \t]*)(describe|context|it)[ \t]*\([ \t]*["'](.*)["']/.\1\3/f,function/
Winston
fonte