Comment insérer la date dans vim

23

Dans vim, vous pouvez exécuter des commandes avec "!". Vous pouvez combiner cela avec "r" pour insérer la sortie dans votre tampon actuel.

: r! date
ven. juil. 20 09:39:26 SAST 2012

insérera la date dans un fichier.

Maintenant, quand j'essaie de faire des trucs plus intéressants comme la date avec un format différent +% F. Sur la ligne de commande

$ date +% F
2012-07-20

In vim

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

Ce qui met le nom du fichier et met F après. certains comment la r! date "+% F" est développée dans vim et ne s'exécute pas sur la ligne de commande. Que dois-je faire pour exécuter cela afin qu'il place le contenu dans vim.

Peut-être que vim a un meilleur moyen d'insérer des dates dans des fichiers.

nelaaro
la source
doublon possible: stackoverflow.com/questions/6344750/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
Voici une autre réponse valide utilisant <F3>. Vous devrez modifier votre vimrcpour obtenir le format de date de votre choix, automatisé .
nilon

Réponses:

21

Vim a une strftime()fonction interne . Essayez ceci (en mode insertion):

<C-r>=strftime('%F')<CR>
Heptite
la source
1
Je choisis votre réponse car c'est la façon la plus proche de faire les choses.
nelaaro
1
Et en mode normal, c'est la même chose (insérer la date à la position actuelle ): "=strftime("%F")<CR>P(Source: vim.wikia.com/wiki/Insert_current_date_or_time )
erik
19

J'ai continué à expérimenter jusqu'à ce que je comprenne que vim développait le caractère "%". Alors, échappez simplement à "\%" et tout fonctionne comme prévu.

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

Maintenant, je peux mettre des dates dans des fichiers comme je le voudrais

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

nelaaro
la source
1
+1 Que vous pouvez utiliser avec d'autres programmes que datetrop, et donc c'est plus facile à mémoriser que l'internat "strftime" -thing.
math
10

Une autre méthode, sans s'échapper, utilisant system():

system('date +%F')

En mode INSERT :

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

En mode NORMAL :

:put=system('date +%F')<CR>
romainl
la source
1
<Cr> est très utile, j'aurais aimé avoir passé plus de temps à lire l'aide dans vim.
nelaaro
1
Ce n'est jamais trop tard.
romainl