Quelles commandes puis-je utiliser dans Emacs pour insérer dans le tampon de texte d'un fichier la date et l'heure actuelles?
(Par exemple, l'équivalent dans le Bloc-notes est simplement d'appuyer sur F5, ce qui est à peu près la seule fonctionnalité utile pour le Bloc-notes!)
C-u M-! date
Mettez dans votre fichier .emacs:
;; ====================
;; insert date and time
(defvar current-date-time-format "%a %b %d %H:%M:%S %Z %Y"
"Format of date to insert with `insert-current-date-time' func
See help of `format-time-string' for possible replacements")
(defvar current-time-format "%a %H:%M:%S"
"Format of date to insert with `insert-current-time' func.
Note the weekly scope of the command's precision.")
(defun insert-current-date-time ()
"insert the current date and time into current buffer.
Uses `current-date-time-format' for the formatting the date/time."
(interactive)
(insert "==========\n")
; (insert (let () (comment-start)))
(insert (format-time-string current-date-time-format (current-time)))
(insert "\n")
)
(defun insert-current-time ()
"insert the current time (1-week scope) into the current buffer."
(interactive)
(insert (format-time-string current-time-format (current-time)))
(insert "\n")
)
(global-set-key "\C-c\C-d" 'insert-current-date-time)
(global-set-key "\C-c\C-t" 'insert-current-time)
J'ai utilisé ces courts extraits:
(defun now ()
"Insert string for the current time formatted like '2:34 PM'."
(interactive) ; permit invocation in minibuffer
(insert (format-time-string "%D %-I:%M %p")))
(defun today ()
"Insert string for today's date nicely formatted in American style,
e.g. Sunday, September 17, 2000."
(interactive) ; permit invocation in minibuffer
(insert (format-time-string "%A, %B %e, %Y")))
Ils sont originaires de journal.el
Pour insérer la date:
M-x org-time-stamp
Pour insérer la date et l'heure:
C-u M-x org-time-stamp
Vous pouvez lier une clé globale pour cette commande.
La méthode de org-mode
est très conviviale, vous pouvez sélectionner n’importe quelle date dans le calendrier.
Vous pouvez installer yasnippet , qui vous permettra de taper "time" et la touche de tabulation, et fera bien plus encore. Il appelle simplement current-time-string
en coulisse pour que vous puissiez contrôler le formatage à l'aide de format-time-string
.
Voici un paquet que j'ai écrit il y a quelque temps et qui fait ce que vous demandez.
http://github.com/rmm5t/insert-time.el/tree/master/insert-time.el
(require 'insert-time)
(define-key global-map [(control c)(d)] 'insert-date-time)
(define-key global-map [(control c)(control v)(d)] 'insert-personal-time-stamp)
M-1 M-! rendez-vous amoureux
la commande Shell que vous exécutez est donc insérée dans la mémoire tampon en cours d’édition plutôt que dans une nouvelle.
Merci, CMS! Ma variation, pour ce que ça vaut, me rend assez heureux:
(defvar bjk-timestamp-format "%Y-%m-%d %H:%M"
"Format of date to insert with `bjk-timestamp' function
%Y-%m-%d %H:%M will produce something of the form YYYY-MM-DD HH:MM
Do C-h f on `format-time-string' for more info")
(defun bjk-timestamp ()
"Insert a timestamp at the current point.
Note no attempt to go to beginning of line and no added carriage return.
Uses `bjk-timestamp-format' for formatting the date/time."
(interactive)
(insert (format-time-string bjk-timestamp-format (current-time)))
)
Je mets cela dans un fichier appelé par mes .emacs en utilisant:
(load "c:/bjk/elisp/bjk-timestamp.el")
ce qui facilite la modification sans risquer de casser quelque chose d'autre dans mes fichiers .emacs, et m'a permis un point d'entrée facile pour peut-être un jour apprendre en quoi consiste la programmation LISP d'Emacs.
P.S. Les critiques concernant ma technique n00b sont les bienvenues.
Pour obtenir une réponse similaire à celle déjà publiée, ainsi que des explications et des extensions telles que l'ouverture automatique d'un fichier et l'insertion de la date du jour à la fin (comme un journal), consultez Discussion de Paul Ford sur ses utilitaires emacs .
Voici mon point de vue là-dessus.
(defun modi/insert-time-stamp (option)
"Insert date, time, user name - DWIM.
If the point is NOT in a comment/string, the time stamp is inserted prefixed
with `comment-start' characters.
If the point is IN a comment/string, the time stamp is inserted without the
`comment-start' characters. If the time stamp is not being inserted immediately
after the `comment-start' characters (followed by optional space),
the time stamp is inserted with “--” prefix.
If the buffer is in a major mode where `comment-start' var is nil, no prefix is
added regardless.
Additional control:
C-u -> Only `comment-start'/`--' prefixes are NOT inserted
C-u C-u -> Only user name is NOT inserted
C-u C-u C-u -> Both prefix and user name are not inserted."
(interactive "P")
(let ((current-date-time-format "%a %b %d %H:%M:%S %Z %Y"))
;; Insert a space if there is no space to the left of the current point
;; and it's not at the beginning of a line
(when (and (not (looking-back "^ *"))
(not (looking-back " ")))
(insert " "))
;; Insert prefix only if `comment-start' is defined for the major mode
(when (stringp comment-start)
(if (or (nth 3 (syntax-ppss)) ; string
(nth 4 (syntax-ppss))) ; comment
;; If the point is already in a comment/string
(progn
;; If the point is not immediately after `comment-start' chars
;; (followed by optional space)
(when (and (not (or (equal option '(4)) ; C-u or C-u C-u C-u
(equal option '(64))))
(not (looking-back (concat comment-start " *")))
(not (looking-back "^ *")))
(insert "--")))
;; If the point is NOT in a comment
(progn
(when (not (or (equal option '(4)) ; C-u or C-u C-u C-u
(equal option '(64))))
(insert comment-start)))))
;; Insert a space if there is no space to the left of the current point
;; and it's not at the beginning of a line
(when (and (not (looking-back "^ *"))
(not (looking-back " ")))
(insert " "))
(insert (format-time-string current-date-time-format (current-time)))
(when (not (equal option '(16))) ; C-u C-u
(insert (concat " - " (getenv "USER"))))
;; Insert a space after the time stamp if not at the end of the line
(when (not (looking-at " *$"))
(insert " "))))
Je préfère lier ceci à C-c d
.