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.