2010-11-21 19 views
6

Cambié recientemente de Eclipse a Vim. Me encanta. Hay algunos problemas en los que estoy trabajando, pero uno de los problemas con los que tengo muchos problemas son los comentarios del doc de PHP. En Eclipse pude escribir:Vim: cómo cambiar el texto desde una secuencia de comandos de sangría

/** [enter] 

y la siguiente línea de auto gustaría llenar de

* 

así que tendría:

/** 
* [comment goes here] 

Me pregunto si hay algo como esto para vim. Parece que hay algunos complementos para autogenerar comentarios de documentos ejecutando un comando, pero me gustaría que los haga mientras escribo.

Estaba jugando con la secuencia de comandos PHP indent (http://www.vim.org/scripts/script.php?script_id=1120) y lo hice reconocer cuando está dentro de un bloque de comentarios de documentos, pero no puedo encontrar la manera de conseguir que realmente cambie el texto y agregar un "*" después de presionar Enter cuando está dentro del bloque.

He intentado lo que he visto otros plugins hacen:

let @z = ' * ' 
put! z 

trataron esto también:

exe 'normal!' '"zgp' 

pero no hubo suerte. ¿Esto no es posible a partir de un guión de sangrado, y si no es así, ¿cómo hago para que Vim reconozca un bloque de comentario de doc y actúe en consecuencia mientras escribo?

¡Cualquier ayuda sería muy apreciada!

Respuesta

2

No hay necesidad de perder el tiempo con los archivos de sangría. El formatoptions de Vim lo hará por usted y en una variedad de idiomas (no solo PHP).

asegurarse de que ha incluido en su rformatoptions:

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

Puede incluir esto en su .vimrc o en .vim/ftplugin/php.vim (si sólo desea activar esta para PHP).

Para obtener más información sobre formatoptions y de tipo de archivo plugins, ver:

+1

Este es el camino correcto a seguir. Como resumen rápido de una respuesta muy completa, diría agregar 'set fo + = r' a .vimrc. –

+1

Gracias por esto ... parece funcionar bien – andrew

+0

Extraño, esto funciona cuando tengo todos los complementos deshabilitados y establezco fo + = r, pero cuando uso el guión PHP indent stock (sin modificaciones) y configuro fo + = r, no funciona no funciona establecer fo? == "qrowcb" ... alguna idea? ¿Hay otra configuración que podría estar deshabilitando esto? – andrew

1

¿Agregaría el siguiente código a su vimrc hacer algo similar a lo que quiere?

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

que actualmente no puedo encontrar la manera de hacer que funcione sin anular la <!-- ---> comentando, que este hace. Es decir. esto romperá el auto-sangrado con <!-- --> comentarios.

Editar. Se agregó ://,:# a comments como lo hace la distribución de Johnsyweb.

+0

'comments' debe ajustarse automáticamente por el' php suministrado. secuencia de comandos de sangría vim' '' los comentarios son parte de la sintaxis HTML. – Johnsyweb

+0

@Johnsyweb Sí, pero el fragmento anterior sobrescribe al hacer 'comments = ...'. Si en cambio hice 'comments + = ...', los comentarios de estilo/* */no funcionan correctamente --- No estoy seguro de por qué. – dennycrane

+0

Funciona para mí de fábrica: 'comments = s1:/*, mb: *, ex: * /,: //,: #' – Johnsyweb

0

Trate de añadir esto a su vimrc:

let g:PHP_autoformatcomment=1 

estoy en un Mac y parece ser activado por defecto. Funciona exactamente como lo dijiste.

Cuestiones relacionadas