Najlepszy sposób na wstawienie znacznika czasu w Vimie?

EditPad Lite ma fajną funkcję (CTRL-E, CTRL-I), który wstawia znacznik czasu np. "2008-09-11 10: 34: 53" do kodu.

Jaki jest najlepszy sposób na uzyskanie tej funkcjonalności w Vim?

(używam Vima 6.1 na serwerze Linuksowym przez SSH. W obecnej sytuacji wielu z nas ma wspólny login, więc nie chcę tworzyć skrótów w katalogu domowym, jeśli jest inny wbudowany sposób na uzyskanie znacznika czasu.)

 76
Author: Valery Viktorovsky, 2008-09-11

11 answers

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

Wypróbowałem, działa na moim Macu:

:r! date

Produkuje:

Thu Sep 11 10:47:30 CEST 2008

To:

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

Produkuje:

2008-09-11 10:50:56
 69
Author: Daren Thomas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-02 14:21:07

Aby działać wieloplatformowo, po prostu umieść w swoim 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>

Teraz możesz po prostu wcisnąć F3 w dowolnym momencie wewnątrz Vi / Vim i otrzymasz znacznik czasu jak 2016-01-25 Mo 12:44 wstawiony za kursorem.

Aby uzyskać pełny opis dostępnych parametrów sprawdź dokumentację funkcji C strftime () .

 97
Author: Swaroop C H,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-25 11:52:47

Jako rozszerzenie odpowiedzi @Swaroop C H,

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

Jest bardziej zwartą formą, która drukuje również strefę czasową (w rzeczywistości różnica w stosunku do UTC, w formie zgodnej z ISO-8601).

Jeśli wolisz używać zewnętrznego narzędzia z jakiegoś powodu,

:r !date --rfc-3339=s

Da ci pełny znacznik czasu zgodny z RFC-3339; użyj ns zamiast s dla Precyzji podobnej do Spocka, i przepuść tr ' ' T, aby użyć dużej litery T zamiast spacji między datą i czasem.

Również możesz go znaleźć warto wiedzieć, że

:source somefile.vim

Będzie czytać w poleceniach z somefile.vim: w ten sposób można ustawić własny zestaw mapowań itp., a następnie załaduj go, gdy używasz Vima na tym koncie.

 9
Author: intuited,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-12-11 04:54:12

Dlaczego wszyscy używają :r!? Znajdź pustą linię I wpisz !!date z trybu komend. Zapisz naciśnięcie klawisza!

[n. b. spowoduje to przekierowanie bieżącego wiersza na standardowe wejście, a następnie zastąpienie wiersza wyjściem polecenia; stąd część "znajdź pustą linię".]

 8
Author: luser droog,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-12 10:46:06

Zajrzyj do porady poświęconej wstawianiu/aktualizacji znacznika czasu w Vimie.wikia.

 6
Author: Luc Hermitte,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-18 16:35:53

:r! data

Możesz dodać format do polecenia date (Man date), jeśli chcesz mieć dokładnie ten sam format i dodać go również jako alias Vima

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

, który tworzy format pokazany w przykładzie (data w powłoce nie używa \%, ale tylko %, vim zastępuje % nazwą bieżącego pliku, więc musisz go usunąć).

Możesz dodać mapę w swoim .vimrc, aby umieścić polecenie automatycznie, na przykład, za każdym razem, gdy naciśnij F3:

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

(edytowane z góry :) ) (Edit: Zmień część tekstu na kod, tak aby

<F3> 

Mogą być wyświetlane)

 6
Author: Vinko Vrsalovic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-04 11:02:47

Dla uniksowego znacznika czasu:

:r! date +\%s

Możesz również mapować to polecenie do klucza (na przykład F12) w Vimie, jeśli używasz go często:

Włóż to do swojego .vimrc:

map  <F12> :r! date +\%s<cr>
 4
Author: fijter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-11 08:51:26
 2
Author: pera,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-03 19:45:23

Kolejny szybki sposób nieuwzględniony w poprzednich odpowiedziach: type -

!!data

 0
Author: lukmac,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-04 08:55:46

Z Vim Wikia .

Używam tego zamiast ruszać ręką, aby uderzyć w Klawisz F:

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

Teraz w trybie wstawiania po prostu wpisz tds i jak tylko nacisnę spację lub powrócę, dostaję datę i piszę dalej.

Wstawiłem tam %b, bo lubię oglądać nazwę miesiąca. %F daje mi coś do sortowania według daty. Mogę to zmienić na %Y%m%d, żeby między jednostkami nie było znaków.

 0
Author: user3449771,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-22 13:46:04

Unix, użycie:

!!date

Windows, użycie:

!!date /t

Więcej szczegółów: zobacz Insert_current_date_or_time

 0
Author: byte-pirate,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-19 11:44:38