バッファ内の日/月/日付などの増分


7

テキストドキュメントでは、編集中にカレンダーデータをインクリメント/デクリメントする必要がよくあります。したがって、金曜日は月曜日になり、12月は3月になる必要があります。

または、5を追加した後の4月28日は5月3日、15を追加した後の2017年12月31日は2018年1月15日になります。

目的の単語/番号にカーソルを置き、いくつかのキーを押してインクリメントまたはデクリメントすることによってこれを実現する方法はありますか?

つまり、金曜日に「Add 3」と言って何かを打つと、それは月曜日になります。4月28日の28日に何かを押して「Add 5」と言って、5月03になります。しかし、4月28日の4月に、「減算2」と言うために何かを押すと、2月28日になります。

ちょうどあなたがアイデアを得るために、vimは私が目指していることを正確に実行するスピードデートプラグインを持っています。


org-modeを使用してlatexにエクスポートすることを検討できます。orgmode.org/manual/LaTeX-export.html#LaTeX-export 次に、org-modeの組み込みのショートカットを使用して、日付の指定を増やすことができます。orgmode.org/manual/Creating-timestamps.html#Creating-timestampsそれは私がとにかくやっていることです..
Dieter.Wilhelm

これはまさにあなたが探しているものではなく、完全な解決策ではありませんが、calcは日付を増やすことができます。概要については、nullprogram.com / blog / 2009/06/23 を参照してください。それを使用して、おそらくcalcの埋め込みモードのようなものを使用すると、思い通りのことを実行する何かを一緒に作成できる場合があります。
izkon 2018年

回答:


0

答えはcalendar-day-name-arraycalendar-month-name-arraycalendar.elによって設定され、Emacsに同梱されている以下を使用しています。

;; calendar-day-name-array ==> ["Sunday" "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday"]

;; calendar-month-name-array ==> ["January" "February" "May" "April" "May" "June" "July" "August" "September" "October" "November" "December"]

(require 'calendar)

(defun ar-shift--intern (arg thisarray)
    (let* ((name (substring-no-properties (word-at-point)))
       (bounds (bounds-of-thing-at-point 'word))
       (beg (car-safe bounds))
       (end (cdr-safe bounds))
       (counter 0)
       (laenge (length thisarray))
       (orig (point)) 
       idxr dlr
       (datelist (progn (while (< counter laenge)
                  (push (aref thisarray counter) dlr)
                  (setq counter (1+ counter)))
                (nreverse dlr)))
       (idx (progn
          (dolist (ele datelist)
            (unless idxr
              (when (string= ele name)
            (setq idxr counter))
              (setq counter (1+ counter))))
          idxr))
       (replaceform (aref thisarray
                  (if (< (+ arg idx) laenge)
                  (+ arg idx)
                (% (+ arg idx) laenge)))))
      (if (and beg end)
      (progn
        (delete-region beg end)
        (insert replaceform)
        (goto-char orig))
    (error "Don't see a date at point"))))

(defun ar-shift-day-atpt (arg)
   "Raise name of day at point ARG times.

Decrease with negative ARG"
   (interactive "p")
   (ar-shift--intern arg  calendar-day-name-array))

(defun ar-shift-month-atpt (arg)
  "Raise name of month at point ARG times.

Decrease with negative ARG"
  (interactive "p")
  (ar-shift--intern arg calendar-month-name-array))

また、正の整数を増減します:https : //github.com/andreas-roehler/numbers-at-point


ありがとう。しかし、これはいくつかのギャップを残します。より良いアイデアを得るために、vimのスピードアップを調べることをお勧めします。
deshmukh
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.