Cómo insertar la fecha en vim

23

En vim puedes ejecutar comandos con "!". Puede combinar eso con "r" para insertar la salida en su búfer actual.

: r! fecha
vie 20 jul 09:39:26 SAST 2012

insertará la fecha en un archivo.

Ahora cuando trato de hacer algunas cosas más interesantes como la fecha con un formato diferente +% F. En la línea de comando

$ fecha +% F
2012-07-20

En vim

: r! date "+% F"
message.to.followup.lstF

Que sale pone el nombre del archivo y pone F después de él. de alguna manera, la r! date "+% F" se está expandiendo en vim y no se ejecuta en la línea de comandos. ¿Qué necesito hacer para ejecutar eso y poner el contenido en vim?

Quizás vim tiene una mejor manera de insertar fechas en los archivos.

nelaaro
fuente
posible duplicado: stackoverflow.com/questions/6344750/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
Aquí hay otra respuesta válida usando <F3>. Tendrá que modificar su vimrcpara obtener cualquier formato de fecha que desee, automatizado .
nilon

Respuestas:

21

Vim tiene una strftime()función interna . Pruebe esto (en modo de inserción):

<C-r>=strftime('%F')<CR>
Heptita
fuente
1
Estoy eligiendo su respuesta, ya que es la forma más vim de hacer las cosas.
nelaaro
1
Y en modo normal esto es lo mismo (inserte la fecha en la posición actual ): "=strftime("%F")<CR>P(Fuente: vim.wikia.com/wiki/Insert_current_date_or_time )
erik
19

Seguí experimentando hasta que descubrí que vim estaba expandiendo el carácter "%". Así que simplemente escapa "\%" y todo funciona como esperaba.

: r! date "+ \% F"
2012-07-20

Ahora puedo poner fechas en archivos como me gustaría

: r! date "+ \% F" -d "-2 día"
18/07/2012

nelaaro
fuente
1
+1 Que puedes usar con otros programas que dateno sean, y por lo tanto, es más fácil de recordar que el algo interno "strftime".
matemáticas
10

Otro método, sin escapar, usando system():

system('date +%F')

En modo INSERTAR :

<C-r>=system('date +%F')<CR>

En modo NORMAL :

:put=system('date +%F')<CR>
romainl
fuente
1
<Cr> es muy útil, desearía haber pasado más tiempo leyendo la ayuda en vim.
nelaaro
1
Nunca es demasiado tarde.
romainl