'교환 포인트 앤 마크'의 유용성은 무엇입니까?


16

exchange-point-and-mark명령은에 묶여 C-x C-x있지만 그러한 두드러진 바인딩을받을 가치가있는 유스 케이스는 생각할 수 없습니다.

를 사용하여 exchange-point-and-mark편집 기술을 개선 하려면 어떻게 해야합니까?

답변:


19

내가 생각할 수있는 두 가지 경우가 있습니다 : 영역을 재 활성화하고 영역의 크기를 조정합니다.

필자는 종종이 바인딩을 사용하여 영역을 비활성화하는 명령을 수행하거나 영역을 활성화하지 않고 표시 및 이동 점을 설정하는 작업을 수행 한 후 영역을 다시 활성화합니다.

예를 들어 Cs를 수행하고 무언가를 검색하십시오. RET을 눌러 검색을 종료 한 다음 Cx Cx를 눌러 검색을 시작한 곳의 모든 항목을 표시하십시오.

StackExchange 답변에 샘플 elisp를 포함시키고 싶을 때 많이하는 또 다른 예 :

  1. 복사하려는 코드 비트를 표시하십시오.
  2. Cu Cx TAB을 눌러 코드를 4 칸 들여 씁니다. 그렇게하면 사이트에서 코드로 렌더링됩니다. 이 단계는 지역을 비활성화합니다.
  3. Cx Cx를 눌러 영역을 다시 활성화 한 다음 Mw를 클립 보드에 복사하여 StackExchange 응답에 붙여 넣을 수 있습니다.

다른 경우는 영역을 표시하고 확장 / 축소하려는 경우입니다. 이 경우 해당 지역의 "다른 쪽 끝"으로 이동하여 이동 한 다음 뒤로 이동하는 것이 편리합니다. 영역이 이미 활성화 된 경우 Cx Cx를 누르면 활성 상태로 유지되어 양쪽 끝을 이동할 수 있습니다.


17

: 이맥스 질문 C-h r i exchange-point-and-mark RET, 더 나은, 또는 C-h r i C-x C-x RET. 아래 표시된 정보로 이동합니다.

이것은 Emacs 매뉴얼의 노드 설정 마크 가 귀하의 질문에 대한 답변으로 말한 것입니다.

C-x C-x포인트 위치에 만족하지만 영역의 다른 쪽 끝 (마크가있는 곳)을 이동 하려는 경우에 유용합니다 . C-x C-x필요한 경우 두 번째 시간을 사용 하면 새 위치에 마크를 놓고 원래 위치로 포인트를 되돌립니다. 일반적으로 마크가 비활성 상태 인 경우이 명령은 먼저 마지막으로 설정된 위치에서 마크를 다시 활성화하여 영역이 강조 표시되도록합니다. 그러나 접두사 인수와 함께 호출하면 마크가 비활성화되고 영역이 강조 표시되지 않습니다. 이것을 사용 하여와 비슷한 방식으로 마크로 이동할있습니다C-u C-<SPC> .

그리고 이것이 Disabled Transient Mark 노드에서 그것에 대해 말합니다 :

[ transient-mark-mode]를 끄면 Emacs가 대체 작동 모드로 전환됩니다.

  • C-<SPC>또는 과 같은 명령으로 마크를 C-x C-x설정해도 영역이 강조 표시되지 않습니다. 따라서 마크의 위치를 ​​확인하면 알 수 없습니다. 당신은 기억해야합니다.

    이 문제에 대한 일반적인 해결책은 마크를 설정 한 다음 위치를 잊기 전에 빨리 사용하는 것입니다. 당신은 또한 수 있습니다 마크를 사용하는 것입니다 경우 확인C-x C-x 을 참조하십시오 -하는 교환 점과 마크의 위치를 마크를 설정 .

과도 마크 모드가 꺼져있는 동안 C-<SPC> C-<SPC>또는을 사용하여 일시적으로 활성화 할 수 있습니다 C-u C-x C-x.

과:

C-u C-x C-x 교환 점과 마크는 마크가 다음에 비활성화 될 때까지 일시적으로 마크를 활성화하고 일시적 마크 모드를 활성화합니다. (이것은 접두사 인수를 가진 C-x C-x명령 exchange-point-and-mark입니다.)


8

일부 작업을 제거하여 선택 항목을 잃어 버렸을 때 이것을 사용하고 선택 항목을 복원하고 싶습니다. 그러한 시나리오 중 하나는 다음과 같습니다.

  1. 직사각형을 선택하십시오.
  2. 죽여.
  3. 죽이는 사각형을 취소합니다.
  4. C-x C-x 선택을 사각형으로 복원합니다.

선택한 영역을 임시 백업하고 복사본을 시험하고 싶을 때 (예 : 찾기 및 바꾸기를 원하지만 수행 방법을 생각할 수없는 경우) 남아있는 텍스트를 손상시키지 않는 방식으로 나중에 사본에서 되돌릴 것입니다.


8

다른 답변은 C-x C-x언제 transient-mark-mode활성화 되어 있는지의 유용성에 중점을 둡니다 . 그러나 C-x C-x이전 버전 transient-mark-mode이며 독립적으로 유용합니다.

의 주요 역할은 C-x C-x포인트와 마크를 바꾸는 것입니다. 단일 버퍼에서 두 점을 편집 할 때 어떤 이유로 든 현재 창을 분할하지 않으려는 경우에 유용합니다. 일부 편집, 마크 설정, 버퍼의 다른 지점으로 이동, 일부 편집, C-x C-x이전 위치에서 C-x C-x일부 편집, 일부 편집, 광고 구역질을 수행하십시오. (두 번째 지점으로 돌아갈 계획 C-u C-SPC이 없다면 더 직관적 일 수 있습니다. Emacs 매뉴얼에서 마크 링 을 찾으십시오 .)

transient-mark-mode비활성화되어 C-x C-x또 다른 중요한 목적을 가지고 : 그것은이 지역이 어디 있는지 알 수 있습니다. C-x C-x, C-x C-x다시 한 번 엿볼 수 있습니다.

(혹시 궁금한 점이 있으시면 저희 중 일부는 여전히 Emacs를 transient-mark-mode비활성화 된 상태 로 사용하는 것을 선호합니다 .)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.