Có vẻ như sự cố bạn đang cố gắng giải quyết không chính xác là mã thụt đầu dòng khi bạn cắt/dán. Bạn có thể giải quyết điều đó bằng cách tự động thụt lại văn bản bằng một cái gì đó như sau.
Lưu ý: Sử dụng một lực lượng đối số tiền tố không tái thụt đầu dòng (C-u C-y), cộng với có biến ngưỡng kích thước.
;; automatically indenting yanked text if in programming-modes
(defvar yank-indent-modes '(emacs-lisp-mode
c-mode c++-mode
tcl-mode sql-mode
perl-mode cperl-mode
java-mode jde-mode
lisp-interaction-mode
LaTeX-mode TeX-mode)
"Modes in which to indent regions that are yanked (or yank-popped)")
(defvar yank-advised-indent-threshold 1000
"Threshold (# chars) over which indentation does not automatically occur.")
(defun yank-advised-indent-function (beg end)
"Do indentation, as long as the region isn't too large."
(if (<= (- end beg) yank-advised-indent-threshold)
(indent-region beg end nil)))
(defadvice yank (after yank-indent activate)
"If current mode is one of 'yank-indent-modes, indent yanked text (with prefix arg don't indent)."
(if (and (not (ad-get-arg 0))
(member major-mode yank-indent-modes))
(let ((transient-mark-mode nil))
(yank-advised-indent-function (region-beginning) (region-end)))))
Nguồn
2012-03-14 22:00:55
Tôi không chắc là tôi có được những gì bạn muốn nói. Bạn có thể vui lòng giải thích lời giải thích của bạn? –
Nhiều chế độ emacs có thụt đầu dòng tự động - khi bạn nhấn [tab] ở bất kỳ đâu trên đường, nó sẽ thụt lề dòng đến vị trí cần thiết. Tôi hiếm khi phải lo lắng về việc thụt lề bằng tay bất cứ điều gì - tôi chỉ để cho người biên tập thực hiện công việc cho tôi. –
Tôi muốn có thể làm điều ngược lại với "Tab" nào; tôi cần điều đó thường khi mã sao chép quá khứ được định vị khác với một tệp khác. – sramij