En XCode, hay un complemento llamado vvdocument, que puede detectar tres /
hits y transferirlos ///
a:
/*!
* @author Robbie Yi JIANG, 29-Jan-2016 14:01:45
*
*
*/
¿Cómo puedo hacer esto en Vim?
fuente
En XCode, hay un complemento llamado vvdocument, que puede detectar tres /
hits y transferirlos ///
a:
/*!
* @author Robbie Yi JIANG, 29-Jan-2016 14:01:45
*
*
*/
¿Cómo puedo hacer esto en Vim?
El método en mi respuesta anterior no se transforma bien en contenido dinámico. Aquí es donde entran los complementos de fragmentos como UltiSnips y SnipMate. Aquí proporcionaré una demostración de UltiSnips . Instálelo usando su método favorito de ¿Cómo instalo un complemento en vim / vi?
Ahora, crea un UltiSnips
directorio en tu .vim
o _vimfiles
directorio. En él, coloque un c.snippet
archivo que contenga:
snippet /// "My header" A
/*!
* @author Robbie Yi JIANG, `date +'%d-%b-%Y %T'`
*
*
*/
endsnippet
Ahora, si abre un archivo C y escribe ///
, debería reemplazarse automáticamente con el encabezado, incluida la fecha y hora actuales. ¡Eso es!
Por lo general, UltiSnips inserta un fragmento cuando presiona Tab. Aquí, hemos especificado que el fragmento debe ingresarse automáticamente, eso es lo A
que indica al final de la primera línea. Pague :help UltiSnips-syntax
para obtener más información sobre cómo escribir fragmentos.
La mayoría de las personas, sin embargo, comienzan con una colección de fragmentos, como vim-snippets
. Hay demasiados para describir aquí, pero puede que algunos de ellos sean muy útiles.
Una forma sería crear un archivo que contenga este fragmento y leerlo cuando escriba
///
.Por ejemplo, cree que
~/.vim/snippets/my_header.snip
contiene este encabezado. Luego defina este mapeo:O:
En la primera asignación, su cursor se colocará en la primera línea del texto insertado; y en el segundo, el cursor se colocará debajo del texto insertado.
Quizás el mapeo más simple, en términos de saltar modos, es:
Para un uso más general, es posible que desee buscar complementos de fragmentos. UltiSnips y SnipMate son dos populares. Yo tampoco lo uso, así que no recomendaré uno.
fuente
Escriba una función que devuelva la cadena y llámela.
Los detalles de
strftime
dependen de su plataforma, si no está en Windows y no funciona, entoncesman strftime
deberá resolver los argumentos.Esto funciona en modo de inserción, pero hace cosas extrañas para el procesamiento de barra diagonal. Si está haciendo
//
comentarios de estilo C ++ , la segunda barra no aparecerá hasta que escriba un espacio o algo después.El
<C-R>=
inserta una expresión en la posición del cursor. ElInsertHeader()<Enter>
bit es la expresión que se evalúa. Construyo la cadena línea por línea en la función,.
es la concatenación de cadenas y\
es el carácter de continuación de línea (donde la continuación dice "combinar esto con la línea anterior", en contraste con cómo C y su familia lo hacen). Finalmente, dos<C-O>
operaciones, una para subir dos líneas y otra para ir al final de la línea donde presumiblemente se ingresará un comentario de archivo; observe el espacio al final de la cadena en la cuarta línea del:header
.fuente