Vim에서을 눌러 .
텍스트 삽입을 포함하여 최신 변경 사항을 반복 할 수 있습니다 .
Emacs C-x
z
에서는 마지막 명령 만 반복합니다. 나는 여기서 매크로를 사용할 수 있다는 것을 알고 있지만, 종종 같은 텍스트를 너무 늦게 다시 삽입해야한다는 것을 알고 있습니다. 다시 한 번만 다시 삽입해야 할 때 매크로를 정의하면 의미가 없습니다.
Q : Emacs 내부에 텍스트 삽입을 반복하는 방법이 있습니까?
답변
dot-mode
“입력 또는 명령을 반복하는 부 모드”이며 필요한 작업을 수행 할 수 있습니다. 기본적으로 마지막 삽입 / 삭제를 반복합니다. .
Vi (m) 과 비슷합니다 .
답변
그건 내가 매크로 정의를 시작하는 것을 잊었다처럼
이를 위해 kmacro-edit-lossage
( C-x C-k l
)를 사용할 수 있습니다 . 300 개의 마지막 키 입력 (간단한 삽입 포함)을보고 매크로로 편집 할 수 있습니다.
간단히 사용하려면 반복하려는 삽입의 시작 부분을 찾고 “매크로 :”에서 해당 지점까지의 모든 텍스트를 삭제 한 다음을 누릅니다 C-c C-c
. 이제 처음에 기록하는 것을 잊지 않은 것처럼 동일한 작업을 수행하는 데 사용할 수있는 매크로가 있습니다.
슬프게도, 마지막 300 번의 키 입력에 마우스 클릭이 포함되어 있으면 실패합니다.
편집 : 다음 코드는 마지막 마우스 이벤트 이후의 키만 유지되도록 변경합니다.
(defadvice recent-keys (after tv/recent-keys-no-mouse first ())
"Return only the keys since the last mouse event"
(let* ((vec ad-return-value)
(lst (append vec nil))
(nmax (length vec))
(i (- nmax 1)))
(while
(and
(>= i 0)
(not
(let ((mod (event-modifiers (elt vec i))))
(or (memq 'click mod)
(memq 'double mod)
(memq 'triple mod)
(memq 'drag mod)
(memq 'down mod)))))
(setq i (- i 1)))
(setq ad-return-value (vconcat (nthcdr (+ i 1) lst) nil))))
(defun tv/kmacro-edit-lossage-no-mouse ()
"Same as `kmacro-edit-lossage', but fallback if the keys contain mouse events.
Source: http://emacs.stackexchange.com/a/4071/184"
(interactive)
(ad-activate-regexp "tv/recent-keys-no-mouse")
(call-interactively #'kmacro-edit-lossage)
(ad-deactivate-regexp "tv/recent-keys-no-mouse"))
;; If you want this function to replace the default one, uncomment this line:
; (global-set-key (kbd "C-x C-k l") 'tv/kmacro-edit-lossage-no-mouse)
답변
dabbrev-expand
함수가 트릭을 수행 할 수 있다고 생각 합니다. emacs, emotion, emoji 등의 단어를 이미 입력했다고 가정 해 봅시다. 다음에 ’em’으로 시작하는 단어를 입력하면 입력 할 수 M-/
있고 emacs는 이미 삽입 된 단어 중 하나를 삽입하도록 제안합니다 ’em’으로 시작합니다. 계속 타격 M-/
하면 이맥스에 ‘이모티콘’, ‘이모티콘’, 그리고 …
repeat-complex-command를 살펴볼 수도 있습니다 . 가장 일반적인 예는 query-replace
항상 동일한 인수를 사용하여 여러 버퍼에서 명령을 반복하고 “pitt”를 “patt”로 바꾸는 것입니다.
한 번 실행하고 다른 창으로 이동 한 후 C-x ESC ESC
다시 입력 하여 입력 하십시오.
그리고 끝내기 위해 반복 삽입을 제안 할 수 있습니까? 이 el 파일은 어떤 종류의 논리를 사용하여 삽입하는 데 도움이됩니다. “마지막 삽입을 반복하지만 각 반복마다 인수가 변경됩니다.
이 예제는 el 파일 에서 찾을 수 있습니다 .
;; You can also iterate over lists:
;; My desk is cluttered
;; My desk is a real mess
;; My desk is very hard to see
;; My desk is buried
;;
;; from m-x insert-patterned
;; ";; My desk is %s"
;; (cluttered "a real mess" "very hard to see" buried)
도움이 되길 바랍니다.