Cara memasukkan tanggal ke vim

23

Di vim Anda dapat menjalankan perintah dengan "!". Anda dapat menggabungkannya dengan "r" untuk memasukkan output ke buffer Anda saat ini.

: r! date
Jum 20 Juli 09:39:26 SAST 2012

akan memasukkan tanggal ke dalam file.

Sekarang ketika saya mencoba melakukan hal-hal yang lebih menarik seperti kencan dengan format berbeda +% F. Di baris perintah

$ date +% F
2012-07-20

Dalam vim

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

Yang keluar menempatkan nama file dan menempatkan F setelahnya. beberapa cara tanggal! "+% F" sedang diperluas di vim dan tidak dijalankan di baris perintah. Apa yang harus saya lakukan untuk menjalankannya sehingga menempatkan konten dalam vim.

Mungkin vim memiliki cara yang lebih baik untuk memasukkan tanggal ke file.

nelaaro
sumber
kemungkinan duplikat: stackoverflow.com/questions/6344750/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
Berikut ini adalah tanggapan lain yang valid menggunakan <F3>. Anda perlu memodifikasi Anda vimrcuntuk mendapatkan format tanggal apa pun yang Anda suka, otomatis .
nilon

Jawaban:

21

Vim memiliki strftime()fungsi internal . Coba ini (dalam mode sisipan):

<C-r>=strftime('%F')<CR>
Heptite
sumber
1
Saya memilih jawaban Anda karena ini adalah cara yang paling disukai untuk melakukan sesuatu.
nelaaro
1
Dan dalam mode normal ini sama (masukkan tanggal pada posisi saat ini ): "=strftime("%F")<CR>P(Sumber: vim.wikia.com/wiki/Insert_current_date_or_time )
erik
19

Saya terus bereksperimen sampai saya tahu bahwa vim sedang memperluas karakter "%". Jadi lepas saja "\%" dan semuanya berjalan seperti yang saya harapkan.

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

Sekarang saya bisa memasukkan tanggal ke file Seperti yang saya inginkan

: r! date "+ \% F" -d "-2 hari"
2012-07-18

nelaaro
sumber
1
+1 Yang dapat Anda gunakan dengan program lain selain dateitu, dan karenanya lebih mudah diingat daripada "strftime" internat.
matematika
10

Metode lain, tanpa melarikan diri, menggunakan system():

system('date +%F')

Dalam mode INSERT :

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

Dalam mode NORMAL :

:put=system('date +%F')<CR>
romainl
sumber
1
<Cr> sangat berguna, saya berharap saya menghabiskan lebih banyak waktu membaca bantuan di vim.
nelaaro
1
Tidak ada kata terlambat.
romainl