Ngày tăng / tháng / ngày, vv trong bộ đệm


7

Trong một tài liệu văn bản, trong khi chỉnh sửa, tôi thường cần tăng / giảm dữ liệu lịch. Vì vậy, thứ Sáu sẽ cần trở thành thứ Hai, tháng 12 sẽ cần trở thành tháng Ba, v.v.

Hoặc ngày 28 tháng 4 sau khi thêm 5 sẽ trở thành ngày 03 tháng 5 và thậm chí ngày 31 tháng 12 năm 2017 sau khi thêm ngày 15 sẽ trở thành ngày 15 tháng 1 năm 2018.

Có cách nào để đạt được điều này bằng cách đặt con trỏ vào từ / số mong muốn và nhấn một số phím để nó tăng hoặc giảm?

Vì vậy, trong khi vào Thứ Sáu, tôi nhấn một cái gì đó để nói 'Thêm 3' và nó trở thành Thứ Hai, v.v. Trong khi vào ngày 28 tháng 28, tôi nhấn một cái gì đó để nói 'Thêm 5' và nó trở thành 03 tháng Năm. Nhưng trong khi vào ngày 28 tháng Tư, tôi nhấn một cái gì đó để nói 'Trừ 2', nó trở thành ngày 28 tháng 2, v.v.

Để bạn có được một ý tưởng, vim có một plugin tăng tốc thực hiện chính xác những gì tôi đang hướng tới.


Bạn có thể cân nhắc sử dụng chế độ org để xuất sang latex. orgmode.org/manual/LaTeX-export.html#LaTeX-export Sau đó, bạn có thể sử dụng các phím tắt sẵn có của chế độ org để tăng thông số ngày của họ. orgmode.org/manual/Creating-timestamp.html#Creating-timestamp đó là những gì tôi đang làm dù sao ..
Dieter.Wilmus

Đây không phải là chính xác những gì bạn đang tìm kiếm và không phải là một giải pháp hoàn chỉnh, nhưng calc có thể tăng ngày. Để biết tổng quan, hãy xem nullprogram.com/blog/2009/06/23 Sử dụng điều đó và có thể một cái gì đó giống như Chế độ nhúng của calc, bạn có thể có thể đánh một cái gì đó với nhau đúng như những gì bạn muốn.
izkon

Câu trả lời:


0

Câu trả lời sử dụng calendar-day-name-arraycalendar-month-name-arrayđược đặt bởi calendar.el và được gửi bằng 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))

Đồng thời tăng hoặc giảm số nguyên dương: https://github.com/andreas-roehler/numbers-at-point


Cảm ơn. Nhưng điều này để lại một số khoảng trống. Đề nghị bạn tra cứu tốc độ cho vim để có ý tưởng tốt hơn.
deshmukh
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.