Domanda

EditPad Lite ha una funzionalità interessante (CTRL-E, CTRL-IO) che inserisce un timestamp, ad es."2008-09-11 10:34:53" nel tuo codice.

Qual è il modo migliore per ottenere questa funzionalità in Vim?

(Sto usando Vim 6.1 su un server Linux tramite SSH.Nella situazione attuale molti di noi condividono un login quindi non voglio creare abbreviazioni nella directory home se esiste un altro modo integrato per ottenere un timestamp.)

È stato utile?

Soluzione

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

L'ho provato, funziona sul mio Mac:

:r! date

produce:

Thu Sep 11 10:47:30 CEST 2008

Questo:

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

produce:

2008-09-11 10:50:56

Altri suggerimenti

Per farlo funzionare multipiattaforma, inserisci quanto segue nel tuo file 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>

Ora puoi semplicemente premere F3 in qualsiasi momento all'interno di Vi/Vim e otterrai un timestamp come 2016-01-25 Mo 12:44 inserito nel cursore.

Per una descrizione completa dei parametri disponibili consultare il documentazione della funzione C strftime().

Perché tutti lo usano :r!?Trova una riga vuota e digita !!date dalla modalità comando.Salva una sequenza di tasti!

[n.b.Ciò indirizzerà la riga corrente a stdin, quindi sostituirà la riga con l'output del comando;da qui la parte "trova una riga vuota".]

Come estensione della risposta di @ Swaroop C H,

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

è un formato più compatto che stamperà anche il fuso orario (in realtà la differenza da UTC, in un formato conforme a ISO-8601).

Se per qualche motivo preferisci utilizzare uno strumento esterno,

:r !date --rfc-3339=s

ti fornirà un timestamp completo conforme a RFC-3339;utilizzo ns invece di s per una precisione simile a quella di Spock e passare attraverso tr ' ' T utilizzare la T maiuscola invece dello spazio tra la data e l'ora.

Inoltre potresti trovare utile saperlo

:source somefile.vim

leggerà i comandi da somefile.vim:in questo modo potresti impostare un set personalizzato di mappature, ecc., e quindi caricarlo quando usi vim su quell'account.

:R!data

Puoi quindi aggiungere il formato al comando date (man date) se desideri esattamente lo stesso formato e aggiungerlo anche come alias vim

:R!data +"\%Y-\%m-\%d \%H:\%M:\%S"

Questo produce il formato che hai mostrato nel tuo esempio (date nella shell non usa \%, ma solo %, vim sostituisce % con il nome del file corrente, quindi devi scapparlo).

Puoi aggiungere una mappa nel tuo .vimrc affinché inserisca automaticamente il comando, ad esempio, ogni volta che premi F3:

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

(Modificato dall'alto :)) (Modifica:cambia la parte di testo in codice, in modo che

<F3> 

può essere visualizzato)

Dai un'occhiata al suggerimento dedicato all'inserimento/aggiornamento della marca temporale su vim.wikia.

Per un timestamp Unix:

:r! date +\%s

Puoi anche mappare questo comando su un tasto (ad esempio F12) in VIM se lo usi molto:

Inserisci questo nel tuo .vimrc:


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

Dal VimWikia.

Lo uso invece di dover muovere la mano per premere un tasto F:

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

Ora in modalità di inserimento digito semplicemente tds e non appena premo la barra spaziatrice o invio, ottengo la data e continuo a digitare.

Ho messo il %b lì dentro, perché mi piace vedere il nome del mese.IL %F mi dà qualcosa da ordinare per data.Potrei cambiarlo in %Y%m%d quindi non ci sono caratteri tra le unità.

Un altro modo rapido non incluso nelle risposte precedenti:tipo-

!!data

Unix, usa:

!!date

Windows, utilizzare:

!!date /t

Maggiori dettagli:vedi Inserisci_data_o_ora_corrente

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top