2010-11-21 19 views
6

Je suis récemment passé d'Eclipse à Vim. J'adore ça. Il y a quelques hangups sur lesquels je travaille, mais l'un de ceux avec lesquels j'ai beaucoup de problèmes, ce sont les commentaires de doc PHP. Dans Eclipse, je pouvais taper:Vim: Comment modifier le texte à partir d'un script de retrait

/** [enter] 

et la ligne suivante remplirais automatique avec

* 

J'aurais:

/** 
* [comment goes here] 

Je me demande s'il y a quelque chose comme ça pour vim. Il semble qu'il y ait des plugins pour auto-générer des commentaires doc en exécutant une commande, mais j'aimerais bien les faire pendant que je tape. Je jouais avec le script PHP indent (http://www.vim.org/scripts/script.php?script_id=1120) et je l'ai eu pour reconnaître quand il est dans un bloc de commentaire doc, mais je n'arrive pas à comprendre comment le faire pour réellement changer le texte et ajouter un "*" après avoir appuyé sur entrer dans le bloc.

J'ai essayé ce que j'ai vu d'autres plugins font:

let @z = ' * ' 
put! z 

essayé cela aussi:

exe 'normal!' '"zgp' 

mais pas de chance. Est-ce que ce n'est pas possible à partir d'un script indent, et si non, comment puis-je obtenir Vim pour reconnaître un bloc de commentaire doc et agir en conséquence pendant que je suis en train de taper?

Toute aide serait grandement appréciée!

Répondre

2

Pas besoin de déranger avec les fichiers d'indentation. Le formatoptions de Vim le fera pour vous et dans une variété de langues (pas seulement PHP).

Vérifiez que vous avez inclus dans votre rformatoptions:

:setlocal fo+=r "to set 
:set fo? "to query 

Vous pouvez inclure dans votre .vimrc ou .vim/ftplugin/php.vim (si vous voulez juste cela pour PHP).

Pour plus d'informations sur formatoptions et plugins de type de fichier, voir:

+1

C'est la bonne façon de procéder. Comme un résumé rapide d'une réponse très complète, je dirais ajouter 'set fo + = r' à .vimrc. –

+1

Merci pour cela ... semble fonctionner très bien – andrew

+0

Bizarre, cela fonctionne quand j'ai tous les plugins désactivés et je mets fo + = r, mais lorsque j'utilise le script PHP indent stock (pas de modifications) et je mets fo + = r, il doesn ne fonctionne pas. mettre fo? == "qrowcb" ... des idées? Y a-t-il un autre paramètre qui pourrait le désactiver? – andrew

1

L'ajout du code ci-dessous à votre vimrc ferait-il quelque chose de similaire à ce que vous voulez?

autocmd BufNewFile,BufRead *.php setlocal formatoptions+=r formatoptions+=o 
autocmd BufNewFile,BufRead *.php setlocal comments=s1:/*,mb:*,ex:*/,://,:# 

Je ne peux pas comprendre actuellement tout à fait comment le faire fonctionner sans déroger à commenter <!-- --->, que cela fait. C'est à dire. cela va rompre l'auto-indentation avec <!-- --> commentaires.

Modifier. Ajouté ://,:# à comments comme le fait la distribution de Johnsyweb.

+0

'comments' doit être réglé automatiquement par le fourni' php. vim' script d'indentation. Les commentaires 'font partie de la syntaxe HTML. – Johnsyweb

+0

@Johnsyweb Oui, mais l'extrait ci-dessus écrase cela en faisant 'comments = ...'. Si j'ai plutôt fait 'comments + = ...', les commentaires/* */style ne fonctionnent pas correctement --- Je ne sais pas pourquoi. – dennycrane

+0

Fonctionne pour moi prêt à l'emploi: 'comments = s1:/*, mb: *, ex: * /,: //,: #' – Johnsyweb

0

Essayez d'ajouter ceci à votre vimrc:

let g:PHP_autoformatcomment=1 

Je suis sur un Mac et il semble être activé par défaut. Fonctions exactement comment vous avez déclaré.