Question

Quelles commandes dans Emacs puis-je utiliser pour insérer dans le tampon de texte d'un fichier la date et l'heure actuelles?

(Par exemple, l'équivalent dans Notepad consiste simplement à appuyer sur F5, ce qui est à peu près la seule fonctionnalité utile pour Notepad!)

Était-ce utile?

La solution

C-u M-! date

Autres conseils

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)

Référence

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 proviennent à l'origine de journal.el

Vous pouvez installer yasnippet , qui vous permettra de taper " heure " et la touche de tabulation, et en fait beaucoup plus. Il appelle simplement chaîne_heure_ courante en coulisse afin que vous puissiez contrôler le formatage à l'aide de chaîne_format_heure .

Pour la date d'insertion:

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.

Voici un package que j'ai écrit il y a quelque temps et qui répond à vos attentes.

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-! date

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 mémoire tampon.

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 mon .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 .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.

(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 " *<*>quot;))
      (insert " "))))

Je préfère lier ceci à C-c d .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top