Meilleure façon pour insérer un horodatage dans Vim?
Question
EditPad Lite est une fonctionnalité intéressante (CTRL-E, CTRL-J'), qui insère un timbre de temps par exemple"2008-09-11 10:34:53" dans votre code.
Quelle est la meilleure façon d'obtenir cette fonctionnalité dans Vim?
(J'utilise Vim 6.1 sur un serveur Linux via SSH.Dans la situation actuelle, un certain nombre d'entre nous de partager une connexion donc je ne veux pas créer des abréviations dans le répertoire d'accueil si il y a un autre moyen intégré pour obtenir un horodatage.)
La solution
http://kenno.wordpress.com/2006/08/03/vim-tip-insert-time-stamp/
Il a essayé, il fonctionne sur mon mac:
:r! date
produit:
Thu Sep 11 10:47:30 CEST 2008
Ce:
:r! date "+\%Y-\%m-\%d \%H:\%M:\%S"
produit:
2008-09-11 10:50:56
Autres conseils
Pour le faire fonctionner de la croix-plate-forme, il suffit de mettre la ligne suivante dans votre 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>
Maintenant, vous pouvez simplement appuyer sur la touche F3 tout moment à l'intérieur de Vi/Vim et vous obtiendrez un timestamp comme 2016-01-25 Mo 12:44
inséré à l'emplacement du curseur.
Pour une description complète des paramètres disponibles vérifier l' la documentation de la fonction C strftime().
Pourquoi tout le monde à l'aide de :r!
?Trouver une ligne vide et tapez !!date
de commande-mode.Enregistrer une séquence de touches!
[n.b.Cela va de la pipe de la ligne actuelle en stdin, puis remplacez la ligne avec la sortie de la commande;d'où le "trouver une ligne vide" partie.]
Comme une extension de @Swaroop C H de la réponse,
^R=strftime("%FT%T%z")
est une forme plus compacte qui sera également imprimer le fuseau horaire (en fait la différence de l'UTC, dans un ISO-8601-conformes à la forme).
Si vous préférez utiliser un outil externe pour une raison quelconque,
:r !date --rfc-3339=s
vous donnera une pleine RFC 3339 conforme timestamp;utilisation ns
au lieu de s
pour Spock-comme la précision et la pipe à travers tr ' ' T
l'utilisation d'un capital T au lieu d'un espace entre la date et l'heure.
Aussi, vous pourriez trouver utile de savoir que
:source somefile.vim
va lire dans les commandes de somefile.vim
:de cette façon, vous pourriez mettre en place un ensemble de correspondances, etc., et puis le charger lorsque vous utilisez vim sur ce compte.
:r!date
Vous pouvez ensuite ajouter le format de la date de commande (homme-jour) si vous voulez le même format exact et ajouter ce que un de vim alias ainsi
:r!date +"\%Y\%m\%d \ \ %H:\%M:\%S"
Qui produit le format que vous avez montré dans votre exemple (la date dans le shell ne pas utiliser \%, mais seulement %, vim remplace % par le nom du fichier en cours, si vous avez besoin de s'en échapper).
Vous pouvez ajouter une carte à votre .vimrc pour mettre la commande automatiquement, par exemple, à chaque fois que vous appuyez sur la touche F3:
:map <F3> :r! date +"\%Y-\%m-\%d \%H:\%M:\%S"<cr>
(Modifié le de ci-dessus :) ) (Edit:modifier le texte de la partie de code, de sorte que
<F3>
peut être affiché)
Ont un look à la pointe dédié d'horodatage de l'insertion/mise à jour sur vim.wikia.
Pour un timestamp unix:
:r! date +\%s
Vous pouvez également mapper cette commande à une touche (par exemple F12) dans VIM si vous l'utilisez beaucoup:
Mettez ceci dans votre .vimrc:
map <F12> :r! date +\%s<cr>
À partir de la Vim Wikia.
Je l'utiliser au lieu d'avoir à bouger ma main pour frapper une touche F:
:iab <expr> tds strftime("%F %b %T")
Maintenant en mode Insertion, il suffit de taper tds et dès que j'ai touché la barre d'espace ou retour, je reçois de la date et de continuer à taper.
J'ai mis le %b
là, parce que j'aime voir le nom du mois.L' %F
donne-moi quelque chose pour trier par date.Je pourrais la remplacer %Y%m%d
donc, il n'y a pas de caractères entre les unités.
Un autre moyen rapide n'est pas inclus par les réponses précédentes:type
!!date