Vim'e zaman damgası eklemenin en iyi yolu?


90

EditPad Lite, kodunuza bir zaman damgası (ör. "2008-09-11 10:34:53") ekleyen güzel bir özelliğe ( CTRL- E, CTRL- I) sahiptir.

Bu işlevselliği Vim'de edinmenin en iyi yolu nedir?

(SSH aracılığıyla bir Linux sunucusunda Vim 6.1 kullanıyorum. Mevcut durumda birçoğumuz bir giriş paylaşıyoruz, bu yüzden bir zaman damgası almanın başka bir yerleşik yolu varsa, ana dizinde kısaltmalar oluşturmak istemiyorum. )

Yanıtlar:


87

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

Denedim, Mac'imde çalışıyor:

:r! date

üretir:

Thu Sep 11 10:47:30 CEST 2008

Bu:

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

üretir:

2008-09-11 10:50:56

1
Küçük bir not, boşluk gerekli görünmüyor - ": r! Date" da işe yarıyor.
Jon Bringhurst

@AB, bu soruyu gözden geçirerek: stackoverflow.com/questions/15394572/… , bir ters eğik çizgi ile kaçabileceğiniz görülüyor. Bunu benim için deneyebilir misin?
Daren Thomas

3
Tamamen işe yarıyor. Yazmanın diğer yolları :r!date "+\%F \%T"veya :r!date +\%F\ \%T.
chrisfargen

Bunu vimrc'ime koymaya gittim ... sonra onu çoktan oraya koyduğumu fark ettim. Harika çalışıyor.
mgjk

Fedora 31'imde bir sihir gibi çalışıyor. Teşekkür ederim.
rchrd

115

Platformlar arası çalışmasını sağlamak için aşağıdakileri sayfanıza koyun 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>

Artık Vi / Vim'de istediğiniz zaman F3'e basabilirsiniz 2016-01-25 Mo 12:44ve imlece eklenmiş gibi bir zaman damgası alırsınız .

Mevcut parametrelerin tam açıklaması için, , C işlevi strftime () belgelerine bakın .


Bu sistemi geniş (linux) yapmak için bir yöntem var mı?
nilon

Bu zaman damgasına sahip bir dosyayı dosya adı olarak oluşturmanın veya kaydetmenin bir yöntemi var mı?
nilon

Teşekkürler, çünkü F3 zaten başka bir şey için kullanıldı. Ben normal modda özel bir komut tanımlanmış :Datebenim için aşağıdakileri ekleyerek ~/.vimrcyapılandırma dosyası: command! Date put =strftime('%Y-%m-%d'). Tarihi yeni bir satıra ekler. satırsonu olmadan bir sürüm yapmayı başaramadı.
Paul Rougieux

1
@PaulRougieux Aşağıdakiler, tarihi yeni satır olmadan eklemek içindir:command! Date :normal a<C-R>=strftime('%Y-%m-%d')<CR>
UnderBlue592

13

Neden herkes kullanıyor :r!? Boş bir satır bulun ve yazın!!date komut modundan yazın. Bir tuş vuruşunu kaydedin!

[nb Bu, geçerli satırı stdin'e aktaracak ve sonra satırı komut çıktısı ile değiştirecektir; dolayısıyla "boş bir satır bul" bölümü.]


9

@ Waroop CH'nin cevabının bir uzantısı olarak,

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

saat dilimini de yazdıracak daha kompakt bir formdur (aslında UTC'den fark, ISO-8601 uyumlu bir biçimde).

Herhangi bir nedenle harici bir araç kullanmayı tercih ederseniz,

:r !date --rfc-3339=s

size tam bir RFC-3339 uyumlu zaman damgası verecektir; kullanmak nsyerine silişkin Spock benzeri yoluyla hassas ve boru tr ' ' Tyerine tarih ve zaman arasında bir boşluk sermaye T kullanmak.

Ayrıca şunu bilmek de yararlı olabilir

:source somefile.vim

komutları okuyacak somefile.vim: bu şekilde özel bir eşleme seti oluşturabilir ve sonra o hesapta vim kullanırken yükleyebilirsiniz.


strftime (), vim içindeki bir işlevdir. Ayrıca kullanabilirsiniz:put=strftime(""%FT%T%z")
Antonios Hadjigeorgalis

Makinemde (Windows 7, gvim 8.0.69),% F ve% T belirleyicileri çalışmadı, ancak% Y-% m-% d ve% H:% M:% S çalıştı. ( Cplusplus.com/reference/ctime/strftime'a göre ,% F ve% T, C99 için strftime'nin güncellenmiş bir sürümüyle birlikte geldi.) Ayrıca,% z belirteci, saat diliminin kelimeli bir açıklamasını üretti.
Ed Wynn

8

: r! tarih

Tam olarak aynı formatı istiyorsanız ve bunu bir vim takma adı olarak da eklemek istiyorsanız, tarih komutuna (insan tarihi) format ekleyebilirsiniz

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

Bu, örneğinizde gösterdiğiniz formatı üretir (kabuktaki tarih \% kullanmaz, sadece%, vim geçerli dosyanın adıyla% değiştirir, bu yüzden ondan kaçmanız gerekir).

Örneğin, F3'e her bastığınızda komutu otomatik olarak yerleştirmesi için .vimrc dosyanıza bir harita ekleyebilirsiniz:

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

(Yukarıdan düzenlenmiştir :)) (Düzenle: metin bölümünü koda değiştirin, böylece

<F3> 

görüntülenebilir)


4

Unix zaman damgası için:

: r! tarih + \% s

Ayrıca, bu komutu çok kullanıyorsanız VIM'deki bir tuşa (örneğin F12) eşleyebilirsiniz:

Bunu .vimrc dosyanıza koyun:


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

4

Gönderen Vim Wikia .

Bunu bir F tuşuna basmak için elimi hareket ettirmek zorunda kalmadan kullanıyorum:

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

Şimdi Ekle modunda sadece tds yazıyor ve boşluk çubuğuna basar basmaz veya geri döndüğümde tarihi alır ve yazmaya devam ederim.

%bAyın adını görmeyi sevdiğim için oraya koydum . %FBana tarihe göre sıralamak için bir şey verir. Bunu %Y%m%d, birimler arasında karakter olmaması için değiştirebilirim .



0

Önceki cevaplara dahil olmayan başka bir hızlı yol: yazın-

!! tarih


0

:DateTarihi imleç konumuna eklemek için özel bir komut (anahtar eşleme değil) istedim .

Maalesef gibi basit komutlar r!dateyeni bir satırla sonuçlanır. Sonunda şunu buldum:

command Date execute "normal i<C-R>=strftime('%F %T')<CR><ESC>"

tarih / saat dizesini yeni satır eklemeden imleç konumuna ekler ( normal aimleç konumundan sonra eklemek için değiştirin ).


Bu çalışırken, komut bana aşırı derecede karmaşık görünüyor ve bunu yapmanın daha güzel bir yolu olması gerektiğini düşünüyorum. Birini biliyorsanız, lütfen bana bildirin :)
luator
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.