2010-12-14 40 views
4

J'essaie d'utiliser la complétion VIM (dictionnaire et tampon courant), mais je rencontre des problèmes avec? et ! à la fin des noms de méthodes. Puis-je expliquer d'une manière ou d'une autre à vim que les noms de méthodes (les mots en gros) ne peuvent l'avoir qu'à la fin et un seul, c'est-à-dire nom_méthode? pas taureau ??? !! merde !? ou si! xyz ... (quand? et! added iskeyword! xyz existe dans la liste d'achèvement). Des idées comment faire cela?VIM: Méthodes Ruby avec? et ! à la fin

+0

Il semble qu'il n'y ait aucun moyen d'utiliser pattern dans la définition de 'iskeyword' mais uniquement les caractères. Je peux voir comment il pourrait être utile dans le cas de ruby ​​... –

+0

c'est pourquoi j'ai pensé à créer un nouvel éditeur :) – Daniel

Répondre

5

IIRC, vous devez modifier l'option iskeyword.

Vous pouvez essayer set iskeyword+=?,! afin que ? et ! soient considérés comme faisant partie des mots et non du séparateur.

Dans votre .vimrc, vous pouvez ajouter:
autocmd BufRead,BufNewFile *.rb set iskeyword+=?,!

Voir :help iskeyword pour plus d'informations. Edit: Je n'avais pas vu que vous aviez déjà mentionné iskeyword comme solution de contournement possible.

Autre idée:
1. Générez des ctags pour votre code rubis.
2. dans l'option complete, supprimez tout sauf l'option t, ce qui signifie tags only.

Vous n'obtiendrez que des suggestions provenant du fichier d'étiquettes. L'inconvénient est qu'il ajoute une nouvelle étape pour utiliser l'achèvement et vous manquerez un achèvement de non-tag.

+2

s'il vous plaît lire attentivement le message original. iskeyword ne fonctionne pas dans ce cas, car l'ajout? et ! Cela signifie qu'après quelque chose comme «si! xyz», il y aura une nouvelle option d'achèvement! xyz et ce n'est certainement pas ce que je veux. générer des tags à chaque changement? pas la meilleure idée non plus. – Daniel

+1

Votre solution alternative semble être la plus viable dans cette situation. +1 –