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.

nelaaro
źródło
możliwy duplikat: stackoverflow.com/questions/6344750/…
Ciro Santilli 14 改造 中心 法轮功 六四 事件
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>
Heptyt
źródło
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

nelaaro
źródło
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>
romainl
źródło
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