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.



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>

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


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>

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.