Як вставити дату у vim


23

У vim ви можете виконувати команди з "!". Ви можете комбінувати це з "r", щоб вставити вихід у поточний буфер.

: r! дата
Пт 20 липня 09:39:26 SAST 2012

додасть дату у файл.

Тепер, коли я намагаюся зробити ще якісь цікаві речі, такі як дата з іншим форматом +% F. У командному рядку

$ date +% F
2012-07-20

У вим

: r! дата "+% F"
message.to.followup.lstF

Котрий виводить ім'я файлу і ставить F після нього. Деякі, як дата r! "+% F" розширюється в vim, а не запускається в командному рядку. Що мені потрібно зробити, щоб це запустило вміст у vim.

Можливо, vim має кращий спосіб вставити дати у файли.



Ось ще одна дійсна відповідь за допомогою <F3>. Вам потрібно буде змінити ваш, vimrcщоб отримати будь-який формат дати, який вам подобається, автоматизувати .
нілон

Відповіді:


21

Vim має внутрішню strftime()функцію. Спробуйте це (у режимі вставки):

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

1
Я вибираю вашу відповідь, оскільки це найбільш життєвий спосіб робити речі.
nelaaro

1
І в звичайному режимі це те саме (вставити дату в поточній позиції ): "=strftime("%F")<CR>P(Джерело: vim.wikia.com/wiki/Insert_current_date_or_time )
erik

19

Я продовжував експериментувати, поки не з'ясував, що vim розширює характер "%". Тому просто біжіть "\%" і кожна річ працює так, як я очікував.

: r! дата "+ \% F"
2012-07-20

Тепер я можу вводити дати у файли, як я хотів би

: r! дата "+ \% F" -d "-2 день"
2012-07-18


1
+1 Те, що ви також можете використовувати з іншими програмами date, а значить, легше запам’ятати, ніж інтернатове «стропорення».
математика

10

Інший метод, не тікаючи, використовуючи system():

system('date +%F')

У режимі INSERT :

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

У режимі NORMAL :

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

1
<Cr> дуже корисно, хотілося б, щоб я витратив більше часу на читання допомоги у vim.
nelaaro

1
Це ніколи не занадто пізно.
romainl
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.