이 기사에서는 "실행 취소하는 동안 방향을 되돌릴 수 있으므로 실행 취소를 취소 할 수 있기 때문에 이맥스가 재실행했다"고한다.
이것은 무엇을 의미 하는가? 사용자가 Emacs로 어떻게 '재실행'할 수 있습니까?
이 기사에서는 "실행 취소하는 동안 방향을 되돌릴 수 있으므로 실행 취소를 취소 할 수 있기 때문에 이맥스가 재실행했다"고한다.
이것은 무엇을 의미 하는가? 사용자가 Emacs로 어떻게 '재실행'할 수 있습니까?
답변:
짧은 버전 : 실행 취소를 취소합니다. 실행 취소 한 다음과 같은 편집하지 않는 명령 C-f을 수행하면 다음 실행 취소가 실행 취소를 실행하여 다시 실행됩니다.
더 긴 버전 :
실행 취소는 작업 스택에서 작동하는 것으로 생각할 수 있습니다. C-f일련의 실행 취소 작업 후에 일부 명령 (예 :와 같은 탐색 명령 )을 수행하면 모든 실행 취소가 작업 스택으로 푸시됩니다. 따라서 다음 실행 취소는 마지막 명령을 실행 취소합니다. 다음과 같은 조작 순서가 있다고 가정하십시오.
자, 당신은 취소합니다. 마지막 작업을 취소하여 다음 목록을 만듭니다.
이 시점에서 실행 취소 이외 C-f의 작업을 수행하는 경우 작업 스택은 다음과 같습니다.
이제 취소 할 때 가장 먼저 취소해야 할 것은 실행 취소입니다. 원래 스택 결과 및 문서 상태 :
실행 취소 시퀀스를 해제하기 위해 수정 명령을 수행하는 경우 해당 명령은 실행 취소 후에 추가되므로 이후에 실행 취소 할 첫 번째 명령입니다. 때리는 대신 "바"위로 백 스페이스 간격을두고 있다고 가정합니다 C-f. 그럼 당신은했을 것
이 추가 / 다시 추가는 무한정 발생합니다. 익숙해지는 데 약간의 시간이 걸리지 만 실제로는 Emacs에 매우 유연하고 강력한 실행 취소 / 다시 실행 메커니즘을 제공합니다.
실행 취소 : C-_
실행 취소 후 다시 실행하려면 : C-g C-_
여러 번 입력 C-_ 에 의해 취소 된 것을 다시 실행하려면 C-_ , 이맥스는 여러 번 명령을 다시 실행 명령 후 입력 실행하려면 C-xz다음에 여러 번 입력 z(여러 번 매크로를 실행하고자 할 때 흥미) 명령을 반복 키를
C-u
예를 들어 C-u 8 *
(캐럿이있는 곳에 8 * 삽입)을 사용하여 물건을 반복 할 수 있습니다 . 따라서 x 단계 C-u x C-_
를 실행 취소 하는 데 사용할 수 있습니다 .
C-x e
)를 실행 한 직후 e
다시 실행 해야하는만큼 자주 누를 수 있습니다 .
C-/
및 C-x u
동등 대안 실행 취소 키 바인딩입니다 C-_
. C-/
때리는 것이 더 쉽기 때문에 선호합니다 .
C-g C-_
"실행 취소 후 다시 실행"이라고 표시되면 처음 조합에 도달했을 때만 적용됩니다. 그런 다음을 사용하지 않고 실행 취소 키를 반복하십시오 C-g
. 실행 취소 후 바로 3 번 다시 실행하려면을 입력하십시오 C-g C-_ C-_ C-_
. 당신이 입력하면 C-g C-_ C-g C-_ C-g C-_
, 당신은 당신의 실행 취소의 재실행을 취소 서클에서 돌아 다니는 것입니다 ...
C-/
C-/
C-/
C-g
C-/
C-g
C-/
C-/
. 주 C-g
반복하지 않는다.C-g
C-/
C-g
C-/
C-/
마지막 실행 취소 명령 이후에 아무 키나 (문자 입력 또는 커서 이동) 눌렀다면 C-g
다음 실행 취소 / 다시 실행 전에 입력 할 필요가 없습니다 . C-g
자체적으로 아무 것도 수행하지 않는 안전한 키이지만 실행 취소 시퀀스의 끝을 알리기 위해 실행 취소 키가 아닌 키로 계산됩니다. 다른 명령을 누르면 C-f
작동합니다. 커서가 있던 곳에서 커서를 움직일 수 있습니다.
당신이 충돌하는 경우 C-g
또는 다른 명령을 할 때 당신이 의미하지 않았다, 당신은 지금 잘못된 방향으로 취소되어, 단순히 히트 C-g
다시 방향을 전환 할 수 있습니다. 원하는 실행 취소에 도달하기 전에 실수로 다시 실행하고 실행 취소를 통해 실행 취소해야하지만, 계속해서 충돌 C-/
하면 원하는 상태에 도달하게됩니다. 실제로 C-g
한 번 누른 다음 C-/
충분한 시간 을 누르면 버퍼가 있었던 모든 상태에 도달 할 수 있습니다 .
에 대한 대안 바로 가기 undo
이외는, C-/
이다 C-_
, C-x u
하고 M-x
undo
.
참조 취소 이맥스의 실행 취소 시스템에 대한 자세한 내용은 매뉴얼 이맥스한다.
보다 일반적인 실행 취소 / 다시 실행 기능을 원하는 사용자를 위해 누군가가 작성했습니다 undo-tree.el
. Emacs가 아닌 실행 취소의 모양과 느낌을 제공하지만 실행 취소 기록의 전체 '트리'에 액세스 할 수 있습니다.
나는 이맥스의 내장 된 실행 취소 시스템을 좋아하지만이 패키지는 매우 직관적이다.
파일 자체의 주석은 다음과 같습니다.
이맥스는 강력한 실행 취소 시스템을 가지고 있습니다. 대부분의 소프트웨어의 표준 실행 취소 / 재실행 시스템과는 달리, 당신이 복구 할 수 있는 (표준 실행 취소 / 재실행 시스템이 다시 자마자 과거의 상태를 잃을 수있는 반면) 버퍼의 과거 상태. 그러나이 힘은 가격이 책정됩니다. 많은 사람들이 Emacs의 실행 취소 시스템을 혼란스럽고 사용하기 어려워서 덜 강력하지만 직관적 인 실행 취소 / 재실행 시스템으로 대체하는 여러 패키지를 생성합니다.
표준 실행 취소 / 다시 실행으로 인한 데이터 손실과 Emacs의 실행 취소 혼동은 실행 취소 히스토리를 선형 변경 순서로 처리하려고 시도한 결과입니다. 그렇지 않습니다. 이 패키지가 제공하는`undo-tree-mode '는 Emacs의 실행 취소 시스템을 실행 취소 이력을 그대로 처리하는 시스템 인 분기 트리 변경으로 대체합니다. 이 간단한 아이디어를 통해 표준 실행 취소 / 다시 실행 시스템의보다 직관적 인 동작을 기록을 잃지 않는 힘과 결합 할 수 있습니다. 부가적인 부가 보너스는 경우에 따라 실행 취소 이력을보다 효율적으로 저장하여 Emacs가 이력을 폐기하기 전에 더 많은 변경 사항이 누적 될 수 있다는 것입니다.
재실행 에 대한 실행 취소 트리 기발한 조심 !
많은 인기있는 "스타터 키트"(전주곡, 퍼셀, 스페이스 맥)는 실행 취소 트리와 함께 제공됩니다. 대부분 (모두?)도 자동으로 활성화합니다. 언급했듯이 실행 취소 트리는 실행 취소 / 재실행 트리를 시각화하고 탐색 할 수있는 편리한 방법입니다. Prelude는 키 코드 ( uu
)를 제공합니다 C-x u
.
문제는 undo-tree가 redo에 대한 Emacs의 기본 바인딩과 잘 알려진 바인딩을 손상시키는 것 같습니다C-g C-/
.
대신, 이러한 대칭 키를 사용하여 실행 취소 / 다시 실행할 수 있습니다 .
C-/ undo
C-S-/ redo
이 기능은 때때로 비주얼 라이저를 열지 않고 빠르게 다시 실행 하려는 경우에 유용합니다 .
나는 찾을 redo.el
이며 매우 편리한 "정상"실행 취소 / 재실행을 수행하기위한, 그리고 일반적으로 바인딩이 CSZ과 같이, Cz를 실행 취소 :
(when (require 'redo nil 'noerror)
(global-set-key (kbd "C-S-z") 'redo))
(global-set-key (kbd "C-z") 'undo)
파일을 다운로드하여 lisp-path에 넣고 위의 파일을에 붙여 넣으십시오 .emacs
.
기본적으로 Emacs에서 다시 실행하려면 Cg를 누른 다음 실행 취소해야합니다.
그러나 Emacs 내장 실행 취소를 사용하여 다시 실행 명령을 구현할 수도 있습니다.
undo-fu 패키지 는 Emacs 내장 실행 취소 기능을 사용하여 실행 취소 및 재실행을 모두 노출합니다.