Frage Der beste Weg, Timestamp in Vim einzufügen?


EditPad Lite hat eine nette Funktion (STRG-E, STRG-ich), die einen Zeitstempel z.B. "2008-09-11 10:34:53" in deinen Code.

Was ist der beste Weg, um diese Funktionalität in Vim zu erhalten?

(Ich benutze Vim 6.1 auf einem Linux-Server über SSH. In der aktuellen Situation teilen eine Anzahl von uns eine Anmeldung, so dass ich keine Abkürzungen im Home-Verzeichnis erstellen möchte, wenn es eine andere eingebaute Möglichkeit gibt, einen Zeitstempel zu erhalten. )


75
2017-09-11 08:41


Ursprung


Antworten:


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

Versucht es, es funktioniert auf meinem Mac:

:r! date

produziert:

Thu Sep 11 10:47:30 CEST 2008

Dies:

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

produziert:

2008-09-11 10:50:56

66
2017-09-11 08:45



Damit es plattformübergreifend funktioniert, lege einfach folgendes in deine 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>

Jetzt können Sie einfach innerhalb von Vi / Vim F3 drücken und Sie erhalten einen Zeitstempel 2016-01-25 Mo 12:44 eingefügt am Cursor.

Für eine vollständige Beschreibung der verfügbaren Parameter überprüfen Sie die Dokumentation der C-Funktion strftime ().


95
2017-09-12 10:13



Als eine Erweiterung der @Swaroop C H Antwort,

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

ist eine kompaktere Form, die auch die Zeitzone (tatsächlich die Differenz von UTC, in einer ISO-8601-konformen Form) druckt.

Wenn Sie aus irgendeinem Grund ein externes Tool verwenden möchten,

:r !date --rfc-3339=s

gibt Ihnen einen vollständigen RFC-3339-konformen Zeitstempel; benutzen ns Anstatt von s für Spock-ähnliche Präzision und Rohrdurchführung tr ' ' T ein Großbuchstabe T anstelle eines Leerzeichens zwischen Datum und Uhrzeit verwenden.

Vielleicht finden Sie es auch nützlich, das zu wissen

:source somefile.vim

liest Befehle aus somefile.vimAuf diese Weise können Sie einen benutzerdefinierten Satz von Mappings usw. einrichten und dann laden, wenn Sie vim für dieses Konto verwenden.


9
2018-06-05 04:26



Warum benutzen alle Leute? :r!? Suchen Sie eine leere Zeile und geben Sie ein !!date aus dem Befehlsmodus. Speichere einen Tastendruck!

[n.b. Dadurch wird die aktuelle Zeile in stdin eingefügt und dann die Zeile durch die Befehlsausgabe ersetzt. daher der Teil "Finde eine leere Zeile".]


7
2017-10-06 22:19



Werfen Sie einen Blick auf den Tipp gewidmet Zeitstempel einfügen / aktualisieren auf vim.wikia.


6
2017-09-18 16:35



: r! Datum

Sie können dann dem Datumskommando (man date) ein Format hinzufügen, wenn Sie das exakt gleiche Format haben wollen, und dieses auch als vim alias hinzufügen

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

Das erzeugt das Format, das Sie in Ihrem Beispiel gezeigt haben (das Datum in der Shell verwendet nicht \%, sondern nur%, vim ersetzt% durch den Namen der aktuellen Datei, also müssen Sie es entziffern).

Sie können in Ihrer .vimrc eine Karte hinzufügen, um den Befehl automatisch zu speichern, z. B. bei jedem Drücken von F3:

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

(Bearbeitet das von oben :)) (Bearbeiten: Textteil in Code ändern, so dass

<F3> 

kann angezeigt werden)


6
2017-09-11 08:48



Für einen Unix-Zeitstempel:

: r! Datum + \% s

Sie können diesen Befehl auch einem Schlüssel (z. B. F12) in VIM zuordnen, wenn Sie ihn häufig verwenden:

Setzen Sie dies in Ihre .vimrc:


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

4
2017-09-11 08:51



Zeitstempel-Skript


2
2017-11-03 19:45



Ein weiterer schneller Weg, der in früheren Antworten nicht enthalten war: type-

!!Datum


0
2017-07-04 08:55



Von dem Vim Wikia.

Ich benutze das, anstatt meine Hand zu bewegen, um eine F-Taste zu drücken:

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

Jetzt im Einfügemodus geben Sie einfach tds ein und sobald ich die Leertaste drücke oder zurückkomme, erhalte ich das Datum und tippe weiter.

Ich stelle das %b da drin, weil ich den Monatsnamen gerne sehe. Das %F gibt mir etwas nach Datum sortieren. Ich könnte das ändern zu %Y%m%d Es gibt also keine Zeichen zwischen den Einheiten.


0
2018-03-22 13:28