2011-02-12 1 views
2

J'ai essayé d'insérer un horodatage dans les noms de fichiers dans vim. Le meilleur exemple que j'ai trouvé est this. Bien que cela fonctionne avec placer l'horodatage dans le fichier, cela ne fonctionne pas dans la ligne de commande. Voici ce que j'ai dans vimrc:vim place timestamp dans le nom de fichier

nmap <F3> a<C-R>=strftime("%Y%m%d%H%M")<CR><Esc> 
imap <F3> <C-R>=strftime("%Y%m%d%H%M")<CR> 

Sur la ligne de commande type I:

:sav i<C-R><F3>.txt 

Espérant obtenir:

i201102121400.txt 

Au lieu de cela, je reçois:

E15: Invalid Expression: <F3> 
E15: Invalid Expression: <F3> 

Qu'est-ce que je fais de mal?

Aussi, j'utilise à la fois Windows et Linux, il doit donc fonctionner sur les deux. Bonus: Si je peux obtenir l'heure UTZ au lieu de l'heure locale, ce serait fantastique!

Répondre

5

Vous devez utiliser cmap, pas nmap ou imap.

ajouter la même ligne pour la mise en F3 dans le CMAP, la carte de ligne de commande

cmap <F3> <C-R>=strftime("%Y%m%d%H%M")<CR> 

supprimer les correspondances nmap et imap si vous ne avez pas vraiment besoin de l'horodatage ou si vous voulez les utiliser à l'intérieur des tampons d'édition .

+0

Merci! Juste une question, est-il possible d'insérer l'heure en tapant un mot, par exemple ': w% tstamp% -some.conf'>' 20140301-some.conf'? – Sonique

+0

Oui, c'est possible 'tstamp cabine = strftime ("% Y% m% d ") ' et l'abréviation se développe au symbole suivant, vim est génial! – Sonique

Questions connexes