web-dev-qa-db-fra.com

Venez naviguer plus tôt à Vim?

Sto usandoCtrl-]dans Vim per navigare usando Ctags. Si vous êtes dans un fichier alternatif, cliquez ici pour résoudre le problème?

Ex. something.publish in code de base contenente plus occorrenze di publish:

class Foo
  def publish
  end
end

class Bar
  def publish
  end
end
51
Sathish

:tn[ext] va à la prochaine balise, :tp[revious] va à la précédente. :ts[elect] vous donne une liste de choix.

:help tag-matchlist pour plus de choses amusantes et excitantes à essayer!

66
dash-tom-bang

Utilisez g] au lieu de C-] pour obtenir la liste de toutes les correspondances.

Vous voudrez peut-être lire :help g]

100
Dmitry Frank

Ajout de la réponse que je cherchais au cas où cela aiderait les autres:

g<C-]> sautera à la balise s'il n'y a qu'une seule correspondance et présentera une liste s'il y a plusieurs correspondances.

J'ai ajouté cette correspondance à mon .vimrc pour lui permettre de faire ce que je veux par défaut:

nnoremap <C-]> g<C-]>

14
Ross Hambrick

ltag

ltag the_tag_name
lopen

ouvre une fenêtre de localisation avec les correspondances de balises.

C'est particulièrement puissant avec les recherches de balises d'expressions régulières:

ltag /tag_na
lopen

qui listera toutes les balises contenant la chaîne tag_na (incluant donc the_tag_name).

Vous pouvez ensuite effectuer d'autres recherches dans la liste des lieux, avant d'appuyer sur Entrée pour accéder au tag.

Pour l'utiliser pour le mot sous le curseur, vous pouvez définir la carte:

nnoremap <leader>l exec("ltag ".expand("<cword>"))<CR>

Alors, si vous êtes un maniaque de tabous comme moi:

command! -nargs=1 Ltag silent ltag <args> | execute "normal \<C-o>" | tab lopen

ouvrira un nouvel onglet avec la liste des emplacements et tous les matchs, au lieu de sauter directement à l'onglet:

:Ltag /my_struct