Jak wstawić datę do vima


23

W vimie możesz wykonywać polecenia za pomocą „!”. Możesz połączyć to z „r”, aby wstawić wyjście do bieżącego bufora.

: r! data
pt 20 lipca 09:39:26 SAST 2012

wstawi datę do pliku.

Teraz, gdy próbuję zrobić coś ciekawszego, na przykład datę w innym formacie +% F. W wierszu poleceń

Data $ +% F
2012-07-20

In vim

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

Które out określa nazwę pliku, a F po nim. niektóre jak r! data "+% F" jest rozwijany w vimie i nie działa w wierszu poleceń. Co muszę zrobić, aby uruchomić to, aby umieścić zawartość w vimie.

Może vim ma lepszy sposób na wstawianie dat do plików.



Oto kolejna poprawna odpowiedź przy użyciu <F3>. Będziesz musiał zmodyfikować swój, vimrcaby uzyskać dowolny format daty, który ci się podoba, zautomatyzowany .
nilon

Odpowiedzi:


21

Vim ma funkcję wewnętrzną strftime(). Spróbuj tego (w trybie wstawiania):

<C-r>=strftime('%F')<CR>

1
Wybieram twoją odpowiedź, ponieważ jest to najbardziej vimowy sposób na robienie rzeczy.
nelaaro,

1
W trybie normalnym jest to to samo (wstaw datę w bieżącej pozycji ): "=strftime("%F")<CR>P(Źródło: vim.wikia.com/wiki/Insert_current_date_or_time )
erik

19

Kontynuowałem eksperymenty, aż odkryłem, że vim rozwija znak „%”. Więc po prostu ucieknij „\%” i wszystko działa tak, jak się spodziewałem.

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

Teraz mogę wstawiać daty do plików, tak jak chciałbym

: r! data "+ \% F" -d "-2 dzień"
2012-07-18


1
+1, którego możesz używać z innymi programami niż dateteż, a zatem jest łatwiejszy do zapamiętania niż internat „strftime”.
matematyka

10

Inna metoda, bez ucieczki, przy użyciu system():

system('date +%F')

W trybie INSERT :

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

W trybie NORMALNYM :

:put=system('date +%F')<CR>

1
<Cr> jest bardzo przydatny, chciałbym spędzić więcej czasu na czytaniu pomocy w vimie.
nelaaro

1
Nigdy nie jest za późno.
romainl
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.