Pregunta

EditPad Lite tiene una característica interesante (CTRL-E, CTRL-Yo), que inserta una marca de tiempo por ejemplo"2008-09-11 10:34:53" en el código.

¿Cuál es la mejor manera de conseguir esta funcionalidad en Vim?

(Estoy usando Vim 6.1 en un servidor Linux a través de SSH.En la situación actual, un número de nosotros compartimos un inicio de sesión así que no quiero crear abreviaturas en el directorio de inicio si hay otra manera integrada para obtener una marca de tiempo.)

¿Fue útil?

Solución

http://kenno.wordpress.com/2006/08/03/vim-tip-insert-time-stamp/

Probado, funciona en mi mac:

:r! date

produce:

Thu Sep 11 10:47:30 CEST 2008

Este:

:r! date "+\%Y-\%m-\%d \%H:\%M:\%S"

produce:

2008-09-11 10:50:56

Otros consejos

Para hacer que funcione de la cruz-plataforma, sólo hay que poner lo siguiente en su vimrc:

nmap <F3> i<C-R>=strftime("%Y-%m-%d %a %I:%M %p")<CR><Esc>
imap <F3> <C-R>=strftime("%Y-%m-%d %a %I:%M %p")<CR>

Ahora puedes presionar F3 cualquier momento dentro de Vi/Vim y obtendrá una marca de tiempo como 2016-01-25 Mo 12:44 inserta en el cursor.

Para una descripción completa de los parámetros disponibles de verificación de la la documentación de la C de la función strftime().

Por qué está todo el mundo con :r!?Encontrar una línea en blanco y escriba !!date desde el modo de comandos.Guardar una pulsación de tecla!

[n.b.Esto tubería de la línea actual, en la entrada estándar y, a continuación, reemplace la línea con el comando de salida;de ahí la "encontrar una línea en blanco" parte.]

Como una extensión a @Swaroop C H la respuesta,

^R=strftime("%FT%T%z")

es una forma más compacta que también imprimirá el tiempo de la zona (en realidad la diferencia entre la hora UTC, en un ISO-8601-compatible con forma).

Si usted prefiere usar una herramienta externa, por alguna razón,

:r !date --rfc-3339=s

le dará una completa RFC 3339 compatible con marca de tiempo;uso ns en lugar de s para Spock -, como la precisión, y la tubería a través de tr ' ' T el uso de una T mayúscula en lugar de un espacio entre la fecha y la hora.

También puede resultar útil saber que

:source somefile.vim

se lee en los comandos de somefile.vim:de esta forma se podría establecer un conjunto personalizado de asignaciones, etc., y luego cargarlo cuando usted está usando vim en esa cuenta.

:r!fecha

A continuación, puede agregar formato a la fecha de comandos (el hombre de la fecha) si desea que el mismo formato exacto y agregar esto como un vim alias así

:r!fecha +"\%Y-\%m-\%d \%H:\%M:\%S"

Que produce el formato que mostró en el ejemplo (fecha en la cáscara no uso \%, pero sólo %, vim reemplaza % por el nombre del archivo actual, por lo que necesita para escapar de él).

Usted puede agregar un mapa en su .vimrc para que se ponga el comando automáticamente, por ejemplo, cada vez que presione F3:

:map <F3> :r! date +"\%Y-\%m-\%d \%H:\%M:\%S"<cr>

(Editado el anterior :) ) (Edición:cambiar el texto de la parte a del código, a fin de que

<F3> 

se puede mostrar)

Echa un vistazo a la punta dedicado a la marca de tiempo de la inserción/actualización en vim.wikia.

Para un timestamp de unix:

:r! date +\%s

También puede asignar este comando a una tecla (por ejemplo, F12) en VIM si lo uso mucho:

Poner esto en tu .vimrc:


map  <F12> :r! date +\%s<cr>

A partir de la Vim Wikia.

Yo uso esto en lugar de tener que mover mi mano para golpear una tecla F:

:iab <expr> tds strftime("%F %b %T")

Ahora en modo de Inserción es justo el tipo de tds y tan pronto como me golpeó la barra espaciadora o la devolución, puedo obtener la fecha y seguir escribiendo.

Puse el %b allí, porque me gusta ver el nombre del mes.El %F me da algo para ordenar por fecha.Yo podría cambiar para que %Y%m%d así que no hay caracteres entre las unidades.

Otra forma rápida no se incluyen por las anteriores respuestas:tipo

!!fecha

Unix,use:

!!date

De Windows, utilice:

!!date /t

Más detalles:consulte Insert_current_date_or_time

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top