GNU Emacs에서 열을 선택하고 편집하는 방법은 무엇입니까?


15

ViM, TextMate 및 GNU Emacs를 몇 년 동안 사용해 왔습니다.

예를 들어 여기 편집하려는 텍스트가 있습니다.

foo
foo
foo

그리고 여기 내가 원하는 텍스트 결과가 있습니다

bar foo
bar foo
bar foo

Vim에있을 때 첫 번째 줄과 첫 번째 열에서 "Ctrl v"를 수행 한 다음 "2 j"를 누른 다음 "i"를 누르고 "bar"를 입력하면됩니다.

Textmate를 사용 중일 때 아래로 (마우스로) 선택하는 동안 "Apple Command Option"을 누른 다음 "bar"를 입력하면됩니다.

그러나 GNU Emacs 23.1을 사용하고있을 때는 어떻게해야할지 모르겠습니다. : ((

나는 EmacsWiki를 검색하고 인터넷 검색을했지만 해결책을 얻지 못했습니다. 내 솔루션을 알고 있다면 저를 안내하십시오. 그것에 대해 감사하겠습니다.


@Trey Jackson과 @humble coffee, 해결되었습니다. 감사합니다!
— Arie

답변:


16

두 가지 옵션이 떠 오릅니다. 첫 번째는 사각형입니다 (다른 답변에서 언급했듯이). 이에 대한 명확한 지시 사항은 다음과 같습니다.

  1. 첫 줄로 이동, 첫 번째 열
  2. C-SPC
  3. 마지막 줄로 이동 (첫 번째 열)
  4. C-x r t bar SPC RET

매우 멋진 사각형 / 열 편집 명령을 제공하는 다른 옵션은 CUA 모드 입니다. 여기의 블로그 게시물 을 사용하는 방법에 대해 설명합니다 : (내 블로그 공개). CUA 모드의 힘을 보려면 이 3 분짜리 비디오를 시청하는 것이 좋습니다.

CUA 모드를 다음과 통합합니다 (과도 표시 모드를 선호하지 않기 때문에).

(setq cua-enable-cua-keys nil)
(setq cua-highlight-region-shift-only t) ;; no transient mark mode
(setq cua-toggle-set-mark nil) ;; original set-mark behavior, i.e. no transient-mark-mode
(cua-mode)

11

Emacs-24.4에서는 사각형에 대한 기본 지원이 약간 향상되었으므로 다음에을 사용하는 대신 C-SPC다음을 C-x r t수행 할 수 있습니다.

C-x SPC
down down
C-t bar RET

C-SPC방법 과 비교하여 좋은 점 중 하나 는 선택한 사각형에 대한 시각적 피드백을 얻을 수 있다는 것입니다. 물론cua-mode 방법도 잘 작동합니다 (그리고 비슷하게 작동합니다).


슬프게도, 그것은 나에게 개선이 충분하지 않은 것 같습니다 : cua-mode더 옳았습니까 ... 그냥 언급 할 것 :에서 cua-mode, 사각형이 강조 표시되는 동안 텍스트를 입력하고 추가 할 수 있습니다. 현재 내장 된 이맥스 "기본 지원"에서 강조 표시가 사라지고 (선택이 "취소됨") 입력이 커서 지점에 삽입됩니다. 이것은 반 직관적이며 내가 보통 원하는 것 (그리고 어떻게 익숙해 cua-mode
— 지는가

@ ShinTakezou : 직사각형 마크 모드 카운터를 직관적으로 찾는 동안 cua의 동작 카운터가 직관적임을 알 수 있습니다. 다행히도 선택해야합니다. cua 지원을 선호하는 경우 cua-mode를 활성화하거나 (사각형 만 지원하려는 경우) 사용할 수 (global-set-key [?\C-x ?\s] 'cua-rectangle-mark-mode)있습니다.
— Stefan

사실 내가하는 일 : cua-mode를 고수하는 것. 다음과 같이 작동합니다. 열 강조 표시, 텍스트 입력 완료. 그렇지 않으면 : 열을 강조 표시하고 텍스트를 추가하고 미니 버퍼에 텍스트를 입력하십시오 (입력 할 때 버퍼에 표시되지 않음 ...). 나중에 마지막 문자에서 오타를 보게 될 것입니다 ... cua 모드에서 입력 할 때 볼 수 있습니다 (전체 삽입을 취소하지 않음), 다시 생각하고 다른 문자를 삽입하십시오 ... 사각형이 강조 표시됩니다 필요에 따라 btw를 축소하고 확대하거나 텍스트를 더 입력하거나 새 사각형을 "잘라낼 수"있습니다. 더 직관적이고 편안합니다.
— ShinTakezou

나는 당신이 그것을 좋아해서 기쁘다 ;-)
— Stefan

BTW의 Emacs-25에서 CUA가 아닌 rectange C-t작업 (일명 C-x r t)은 입력 할 때 새로 삽입 된 텍스트의 미리보기도 표시합니다.
— Stefan

2

이맥에서는 이런 종류의 열을 '사각형'이라고합니다. 그래서 이 관련 문서의 페이지입니다.

이러한 모든 명령을 사용하려면 영역에 작업중인 사각형이 포함되어 있어야합니다. 따라서 사각형의 왼쪽 상단 문자에 표시를 설정하고 사각형의 오른쪽 하단 문자로 영역을 확장해야합니다. 당신이 M-x string-insert-rectangle따르는 명령은 삽입 할 문자열을 묻는 메시지입니다.


1

최단 답변 :을 통해 CUA 사각형 모드를 활성화하십시오 C-RET.

따라서 귀하의 경우에는

  1. 첫 번째 줄, 첫 번째 열로 이동하여 C-RETCUA 모드로 들어가기 위해 누르십시오.
  2. 마지막 줄, 첫 번째 열로 이동하여 간단히 입력하십시오. barSPC
  3. ESC또는 CG 를 통해 CUA 모드 종료

보다 정교한 솔루션과 CUA 링크는 @Trey의 답변을 참조하십시오.


2
그렇습니다, 나는 언급하기에 평판이 너무 적습니다. 그의 대답을 반복하고 싶지 않지만 CUA 문서에서 더 많은 정보를 추가 할 것입니다.
— Martin

0

이를 위해 replace-regexp를 사용할 수 있습니다.

  1. 마지막 줄로 표시를 설정-> C SPC 마지막 줄로 이동
  2. 미니 버퍼의 Mx replace-regexp RET 유형 (이 Mr에 대한 키 바인딩이 있음)
  3. 줘 ^ RET
  4. 바를 입력하고 RET을 누르십시오

줄의 시작 부분에 막대가 추가됩니다.

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