Chế độ Org Mặc định cho Alt-Enter cho đạn


9

Tôi muốn chế độ org mặc định thành alt-enter khi ở dưới đạn, để đối với đạn tôi có thể chỉ cần nhấn enter để tạo một viên đạn mới.

Ví dụ:

  • Trái chuối
  • táo
  • Kiwi [HIỆN TẠI chuột TẠI ĐÂY]

Khi tôi nhấn enter, tôi muốn có hành vi sau (xảy ra khi tôi nhấn M-enter):

  • Trái chuối
  • táo
  • Quả kiwi
  • [HIỆN TẠI MOUSE TẠI ĐÂY]

Thay vì:

  • Trái chuối
  • táo
  • Quả kiwi

[HIỆN TẠI MOUSE TẠI ĐÂY]

Đó là mặc định cho hầu hết các ứng dụng khác, nhưng tại sao không cho chế độ org?

Điều này sẽ cải thiện đáng kể quy trình làm việc của tôi. Nhưng tôi không biết làm thế nào! Cảm ơn trước.


1
Chào mừng đến với Emacs.SE! Sẽ rất hữu ích nếu bạn có thể giải thích những gì bạn đã cố gắng thực hiện cho đến nay (và những tài liệu tham khảo nào bạn đã tìm kiếm khiến bạn bị mắc kẹt). Để bắt đầu, hãy xem mô tả sau đây về các ràng buộc chính của Emacs , điều này sẽ giúp bạn bắt đầu với các khái niệm.
Dân

1
Tôi nghĩ rằng cái trước đây là hành vi mặc định trong chế độ org. Bạn có thể bắt đầu emacs của mình chỉ với chế độ org được tải và thử lại không?
Leu_Grady

Làm thế nào bạn sẽ chấm dứt một danh sách?
SabreWolfy

1
Không phải là giải pháp, nhưng theo kinh nghiệm của tôi, sử dụng để M-RETcó lợi hơn nhiều. M-RETsẽ làm điều đúng đắn khi điểm nằm trong (i) danh sách (ii) tiêu đề (iii) một ô bảng org (iv) ... Khi bạn bắt đầu thích M-RET, bạn khám phá C-u M-RETvà bạn thích nó hơn nữa! :)
Kaushal Modi

Câu trả lời:


3

Bạn có thể thử phiên bản này. Nó thêm các mục và tiêu đề với lợi nhuận thường xuyên và với lợi nhuận gấp đôi trên một mục trống sẽ chấm dứt danh sách. Nó cũng sửa đổi trả về trong một bảng để thêm hàng hoặc chấm dứt một bảng trên một hàng trống. Nó được thử nghiệm nhẹ;)

(defun scimax/org-return ()
  "Add new list or headline "
  (interactive)
  (cond
   ((org-in-item-p)
    (if (org-element-property :contents-begin (org-element-context))
    (org-insert-heading)
      (beginning-of-line)
      (kill-line)
      (org-return)))
   ((org-at-heading-p)
    (if (not (string= "" (org-element-property :title (org-element-context))))
    (org-insert-heading)
      (beginning-of-line)
      (kill-line)
      (org-return)))
   ((org-at-table-p)
    (if (-any?
     (lambda (x) (not (string= "" x)))
     (nth
      (- (org-table-current-dline) 1)
      (org-table-to-lisp)))
    (org-return)
      ;; empty row
      (beginning-of-line)
      (kill-line)
      (org-return)))
   (t
    (org-return))))

(define-key org-mode-map (kbd "RET")
  'scimax/org-return)

Phản ứng phát triển hơn nữa bởi cùng một tác giả kitchingroup.cheme.cmu.edu/blog/2017/04/09/...
joelostblom


0

Bạn có thể làm như thế này:

 (defun my/org-list-new-item ()
   (interactive)
   (if (org-in-item-p) (org-insert-heading) (org-return)))
 (define-key org-mode-map (kbd "RET") 'my/org-list-new-item)

Nhưng tôi thực sự không khuyên bạn nên sử dụng nó như thế này.


Và nó không có hành vi như msword (nhập hai lần để xóa mục danh sách trống và chuyển đến văn bản 'bình thường'). Tất nhiên nó có thể được thực hiện chỉ cần thêm elisp.
Maxim Kim
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.