texto pegar insertar editar copiar con comando buscar borrar vim vi

pegar - insertar texto vim



¿La mejor manera de insertar la marca de tiempo en Vim? (11)

EditPad Lite tiene una característica agradable ( CTRL - E , CTRL - I ) que inserta un sello de tiempo, por ejemplo, "2008-09-11 10:34:53" en su código.

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

(Estoy usando Vim 6.1 en un servidor Linux a través de SSH. En la situación actual, varios de nosotros compartimos un inicio de sesión, por lo que no quiero crear abreviaturas en el directorio de inicio si hay otra forma incorporada para obtener una marca de tiempo. )



¿Por qué todos están usando :r! ? Encuentre una línea en blanco y escriba !!date desde el modo de comando. ¡Ahorre una pulsación de tecla!

[nb Esto conectará la línea actual a stdin, y luego reemplazará la línea con la salida del comando; de ahí la parte "encontrar una línea en blanco".]


: r! fecha

Luego puede agregar formato al comando date (man date) si quiere el mismo formato y agregarlo también como un alias vim.

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

Eso produce el formato que mostró en su ejemplo (la fecha en el shell no usa /%, pero solo%, vim reemplaza a% por el nombre del archivo actual, por lo que debe escapar).

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

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

(Editado desde arriba :)) (Editar: cambiar parte de texto a código, para que

<F3>

puede ser mostrado)


Como una extensión a la respuesta de @Swaroop CH,

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

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

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

:r !date --rfc-3339=s

le dará una marca de tiempo compatible con RFC-3339; use ns lugar de s para obtener una precisión similar a Spock, y pase por tr '' '' T para usar una T mayúscula en lugar de un espacio entre la fecha y la hora.

También puede ser útil saber que

:source somefile.vim

leerá en los comandos de somefile.vim : de esta manera podría configurar un conjunto personalizado de asignaciones, etc., y luego cargarlo cuando use vim en esa cuenta.


De la Wikia de Vim

Utilizo esto en lugar de tener que mover la mano para presionar una tecla F:

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

Ahora, en el modo Insertar, simplemente escriba tds y tan pronto como pulso la barra espaciadora o regreso, obtengo la fecha y sigo escribiendo.

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



Otra forma rápida no incluida en las respuestas anteriores: escribir

!!fecha


Para que funcione multiplataforma, simplemente ponga 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 puede presionar F3 en cualquier momento dentro de Vi / Vim y obtendrá una marca de tiempo como 2016-01-25 Mo 12:44 insertada en el cursor.

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


Para una marca de tiempo de Unix:

:r! date +/%s

También puede asignar este comando a una clave (por ejemplo, F12) en VIM si la usa mucho:

Pon esto en tu .vimrc:

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