44 votes

Comment se retrouver dans Ruby méthodes dans VIM?

Je suis en train d'apprendre VIM pour les Rails du développement et de voudrais de naviguer facilement à travers les méthodes dans un fichier. Jusqu'à présent, je vois plusieurs options:

  • Trouver 'def' en utilisant

    /def<space>
    
  • Créer une macro qui correspond à une clé à l'aide de q et enregistrer
  • utilisez VIM marques? (même pas sûr de ce qu'ils font, ils ont juste sembler prometteur

N'importe qui ont des idées?

42voto

eremite Points 935

:help ]m

Je pense qu'il exige vim-ruby pour la prise en charge de ruby.

36voto

chillitom Points 5731

vous aurez envie d'une fonctionnalité appelée ctags

voir exuberant ctags, il travaille pour de nombreuses langues, y compris le Rubis et le v est simple à utiliser.

de VIM :help ctags

ctags permettra de créer un index de tous les identificateurs dans une arborescence source. Vous pouvez ensuite utiliser la balise de commandes pour naviguer dans votre arborescence des sources. voir :help tag-commands. Le plus simple est de placer le curseur sur un mot-clé et appuyez sur CTRL-]. Pour revenir à l'endroit où vous êtes venu appuyez sur CTRL-T

Au-delà de cela, vous pouvez consulter cette page qui explique comment utiliser VIM comme un plus complet Ruby IDE: Utiliser Vim comme un Complet Ruby on Rails IDE

14voto

lzap Points 5049

La meilleure solution pour Vim: utilisation ctags. Lire la documentation de Vim sur la façon de naviguer dans les fichiers TAGS, également installer le plugin comme CtrlP qui vous permet de parcourir visuellement les balises.

Avertissement: Exuberant ctags ne fonctionne pas bien avec le Rubis, l'analyseur n'est pas en bon état et il n'a pas été modifié de 4 ans maintenant.

  • ctags n'a pas affaire avec: module A::B
  • ctags n'a pas de balise (au moins une partie de) l'opérateur de méthodes comme le ==
  • ctags ne prend pas en charge qualifié balises, type=+
  • ctags n'est pas sortie des balises pour les constantes ou les attributs.

Malheureusement, tous les autres (j'en ai trouvé 2) Ruby ctags générateurs sont soit obsolètes (pas de Ruby 1.9+ support) ou très lent.

Il y a une solution tho. Ripper-ctags: https://github.com/tmm1/ripper-tags Il est rapide et il fonctionne comme prévu. Il est basé sur Ruby 1.9+ fonction appelée "Ripper" qui nous permet de construire au-dessus de (rapide) Ruby origine de l'analyseur. Il est le plus précis ctags générateur d'aujourd'hui.

Ripper options CLI sont presque identiques à ctags, donc si vous savez déjà ctags, vous trouverez ripper-tags facile à apprendre. C'est aussi simple que:

ripper-tags -R .

Cela crée des BALISES de fichiers qui vim lit automatiquement par défaut (doit être le répertoire où vous avez ouvert votre vim exemple, ou modifier manuellement paramètre de chemin d'accès dans vim si vous démarrez dans un répertoire différent - plus dans le Vim manuel).

Si vous aimez ceci, vous pouvez aller plus loin et installer mon projet qui crée automatiquement des BALISES pour toutes les gemmes que vous installez: https://github.com/lzap/gem-ripper-tags

L'utilisation est très simple (note de nouveau, seulement Ruby 1.9+):

gem install gem-ripper-tags

Ensuite générer des tags déjà installé des gemmes:

gem ripper_tags

Quand vous installez un joyau, les étiquettes seront automatiquement créés.

gem instal some_gem ...

J'ai passer une étape supplémentaire de plus j'ai un git modèle qui est la régénération de mon projet BALISES après chaque git pull ou fusionner automatiquement (à l'aide de ripper-tags):

https://github.com/lzap/bin-public/blob/master/git-hooks-reinstall

Remarque: vous aurez besoin des fichiers de répertoire/git_template ainsi de la même dépôt git.

J'espère que c'est un bon point de départ pour la navigation en Ruby code :-)

5voto

DrAl Points 29528

Quelques idées:

Tout d'abord, faire une cartographie de l'utilisation de la fonction C clés de recherche, en ~/.vim/after/ftplugin/ruby.vim:

:nmap [[ ?def <CR>
:nmap ]] /def <CR>

Ensuite, vous pouvez utiliser [[ et ]] aller de l'avant et à l'arrière d'une fonction, tout comme en C/Perl/Java code etc.

Un autre moyen qui pourrait vous aider:

En .vimrc, ajouter la ligne:

:let ruby_fold = 1

Ensuite, utilisez zj, zk, z[ et z] de naviguer par des plis. Vous pouvez également installer ce plugin , de sorte que vous pouvez facilement supprimer les plis à l'aide de daz.

Pour trouver des fonctions spécifiques (plutôt que de simplement naviguer autour d'eux) que vous souhaitez utiliser ctags (comme mentionné par chillitom). La liste de plugin , il est beaucoup plus facile de naviguer à une fonction spécifique, mais (comme chillitom dit) Ctrl-] et Ctrl-T sont utiles pour les mots-clés suivants sous le curseur.

Pour plus d'informations, voir:

:help [[
:help ft-ruby-syntax
:help z[
:help after-directory

1voto

too much php Points 27983

Une astuce est de chercher simplement à l'aide de '/f methodName'.

Vous devriez aussi regarder au tournant du code de pliage en ajoutant cette ligne dans votre .vimrc:

:let ruby_fold

Voir :help ft-ruby-syntax pour plus de détails.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X