Como configurar tags para Ruby, SASS, Slim e Coffescript?

7

Estou desenvolvendo main no Rails usando SASS, Slim e Coffeescript. Eu tenho Ctags exuberantes instaladas e usando a configuração do tpope

Funciona para que pelo menos eu possa mover meu código ruby.

Mas eu gostaria de poder:

SASS
color: $whatever    <- go to that color
@extend %something  <- go to that mixin
+another()          <- go to that include

HTML/SLIM
.nice_class         <- go to that class in .sass file
#id                 <- find JS files using this #id

RUBY
has_many :something <- go to that class
concerns :important <- go to that symbol

E talvez o mais importante - eu quero concluir automaticamente o que foi dito acima. Para que eu possa reutilizar classes CSS, IDs HTML e símbolos Ruby no projeto.

Como configurar o Ctags para cobrir classes de css, ids de html, mixins sass e tudo mais usado no desenvolvimento moderno da web?

firedev
fonte
Isso parece estar muito além do conhecimento de tags simples e mais do nível de algo parecido cscope, mas não sei se o cscope suporta HTML + JS + CSS.
Muru
11
Você pode dar uma olhada nesta questão SO .
romainl

Respostas:

3

O Vim é um poderoso editor de texto. O recurso de tags baseia-se em uma base simples: o Vim pode ler um ou vários bancos de dados de tags , que contêm registros baseados em linhas que consistem em uma tag (basicamente uma string), um arquivo e endereço correspondentes (padrão de pesquisa) para localizá-lo e opcional informação adicional.

É isso que você obtém: se você criar um arquivo de tags que cubra seu Ruby, SASS e CoffeeScript, poderá pular para tags definidas e usar a conclusão. No entanto, além desse mecanismo simples e fácil de entender, o Vim não tem capacidade de distinguir vários idiomas e símbolos com base na sintaxe ou nos sigilos. Embora você possa criar uma inteligência personalizada em torno disso, você seguirá na direção de criar um IDE, o que o Vim não é. Aceite melhor as limitações e use o Vim onde ele se destaca e atenha-se a um IDE para o resto.

TL; DR: Vim é um editor de texto independente de idioma com meios básicos de navegação, para obter todos os recursos, use um IDE para navegação.

Ingo Karkat
fonte
11
Eu sei que o Vim não entende o idioma que edita. Existe uma maneira de configurar Ctags para que ele colete tudo o que começa com um ponto, hash, sinal de porcentagem etc.? PS. Obrigado pelo movimento camelcase.
firedev
11
Ctags exuberantes tem regras para os idiomas suportados; Eu não acho que você pode mudar isso. Mas você pode definir sua própria análise baseada em regexp via--langdef=... --langmap=... --regex-...=...
Ingo Karkat 19/03/15
2
"Aceite melhor as limitações e use o Vim onde ele se destaca e mantenha um IDE para o resto". @IngoKarkat Isso não faz sentido. Você está dizendo que alternar entre o Vim e um IDE é mais ideal do que personalizar o Vim para fazer tudo o que você deseja. Seria melhor ter um Vim personalizado que faça tudo o que você deseja exatamente da maneira que deseja. Você está desistindo com muita facilidade. Não desista. Vim + Linux + shell = IDE baseado em texto. Você pode fazer o que quiser dentro do conceito de um IDE baseado em texto.
still_dreaming_1
@INTPnerd: Pelo menos para certos idiomas, os IDEs estão muito à frente em termos de funcionalidade; por breves instantes, apenas duas coisas em que será difícil para o Vim acompanhar: visualizações sofisticadas da GUI (excluídas do escopo por Bram) e assincronicidade (difícil de implementar). Eu pessoalmente uso o IntelliJ IDEA e o GVIM em paralelo e estou bastante satisfeito com a configuração "melhor dos dois mundos".
Ingo Karkat 20/03/2015
@IngoKarkat Isso só funciona para certas coisas. Mas, no que diz respeito ao bom suporte para pesquisa / navegação de código, essas são as coisas que você deseja que funcionem muito bem no vim sempre que você o estiver usando. Não faria sentido editar o código no vim e, em seguida, alternar para um IDE para procurar um pedaço de código, para que você possa editá-lo no Vim. Até agora, nunca fiquei feliz com nenhuma emulação do Vim que vi dentro de um IDE. Eu sempre acabo sentindo falta do Vim completo com todas as personalizações e plugins que tenho para isso. Isso se torna cada vez mais verdadeiro quanto mais tempo você usar e, assim, personalizar / estender o Vim ao seu gosto.
still_dreaming_1
1

Experimente o vim-gutentags: https://github.com/ludovicchabant/vim-gutentags Ele gera tags automaticamente para você. Uma palavra de aviso, porém, este plug-in regenerará automaticamente as tags após cada salvamento, para que você fique mais lento. Além disso, ele gerará tags para qualquer arquivo que você abriu, para que você possa acabar com o arquivo de tags na sua pasta dotfiles. Se você deseja desativar a geração de tags para o projeto, leia isto: https://github.com/ludovicchabant/vim-gutentags/commit/7316197a7f884e264e20590cbad90046d8337fbb

Pessoalmente, eu o uso há algum tempo e, se configurado corretamente, esse plugin pode economizar muito tempo, mas o YMMV.

dkns
fonte
Apenas pessoas com deficiência easytagsplugin que estava retardando vim para baixo vi.stackexchange.com/a/2897/237 e passou a usar ganchos git como sugerido por tpope
firedev
^ O que também não funcionou tão bem.
Firedev