10 ответов:
положить в свой .файл 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)
я использовал эти короткие фрагменты:
(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")))они изначально пришли из журнал.Эл
Вы можете установить yasnippet, что позволит вам ввести "время" и клавишу tab, и делает гораздо больше, кроме того. Он просто звонит
current-time-stringза кулисами, так что вы можете управлять форматированием с помощьюformat-time-string.
для вставки даты: М-х орг-штамп времени Для вставки даты и времени: C-u M-x org-time-stamp
может быть, вы можете привязать глобальный ключ для этой команды.
метод org-mode очень удобен для пользователя, вы можете выбрать любую дату из календаря.
вот пакет, который я написал некоторое время назад, что делает то, что вы просите.
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)
М-1 М-! дата
Это приводит к тому, что команда оболочки, которую вы запускаете, будет вставлена в буфер, который вы в настоящее время редактируете, а не в новый буфер.
спасибо, CMS! Мой вариант, для чего это стоит, делает меня достаточно счастливой:
(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))) )Я положил это в файл, который называется my .emacs с помощью:
(load "c:/bjk/elisp/bjk-timestamp.el")что делает его легче изменить, не рискуя ломать что-нибудь еще .emacs, и позволил мне легко войти в возможно когда-нибудь действительно узнать, что такое программирование Emacs Lisp.
П. С. критику относительно моего что n00b техника приветствуется.
для ответа, подобного уже опубликованным, наряду с объяснениями и другими расширениями, такими как автоматическое открытие файла и вставка текущей даты в конце его (например, журнал), проверьте пол Форд обсуждает свои утилиты emacs.
вот мой взгляд на это.
(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 " "))))Я предпочитаю привязать это к
C-c d.
Comments