죽인 사각형을 킬 링에 복사하는 방법


11

버퍼에서 텍스트 사각형을 자주 추출하지만 텍스트가 사각형이 아닌 것처럼 잡아 당기고 싶습니다. 현재 죽인 사각형을 킬 링에 추가하는 방법이 있습니까?

GNU Emacs의 매뉴얼 이 대답했다 :

사각형을“킬링”하는 것은 일반적인 의미에서 죽이지 않습니다. 사각형은 킬 링에 저장되지 않고 가장 최근에 죽인 사각형 만 기록하는 특별한 위치에 저장됩니다. 사각형을 얀킹하는 것은 다른 얀크 명령을 사용해야하는 얀킹 선형 텍스트와 너무 다르기 때문입니다. 양크 팝핑은 사각형에 대해 정의되지 않았습니다.

그러나 기본적으로 원하는 동작을 얻을 수 있습니다.

  • M-> 버퍼 끝으로 이동
  • C-x r y 양각 직사각형
  • C-x C-x 교환 점 및 마크 (새로 선을 선택)
  • C-w 선택을 킬 링으로 죽여라

죽인 사각형을 킬 링 항목으로 바꾸는 더 좋은 방법이 있습니까?


연결된 솔루션은 당신이 요구 한 것이 아니지만 원하는대로 사각형을 yan니다
jue

답변:


6

귀하의 질문을 이해하면 다음과 같은 것을 찾고 있습니다.

(defun youngfrog/copy-rectangle-to-kill-ring (start end)
  "Saves a rectangle to the normal kill ring. Not suitable for yank-rectangle."
  (interactive "r")
  (let ((lines (extract-rectangle start end)))
    (with-temp-buffer
      (while lines ;; insert-rectangle, but without the unneeded stuff
        ;; (most importantly no push-mark)
        (insert-for-yank (car lines))
        (insert "\n")
        (setq lines (cdr lines)))
      (kill-ring-save (point-min) (point-max)))))

Ergo의 의례


3

킬 링에 사각형이 있는지에 대한 특별한 점은 확실하지 않지만 Emacs-24.4로 업그레이드 C-x SPC .... M-w하면 사각형을 선택하여 킬 링에 배치 할 수 있습니다 . 그 후에 그 C-y직사각형을 잡아 당깁니다 (똑같은 방식으로 C-x r ytho).


킬 링에는 "특별한"두 가지가 있습니다. 가장 중요한 (나에게) 킬 링의 항목이 꽉 잡히는 방식입니다. 간단히 말해, yank는 기존 텍스트를 오른쪽으로 이동하는 대신 아래로 이동합니다. 킬 링을 사용하면 킬된 텍스트의 기록을 유지하는 데 따른 이점도 있습니다. 24.4가 두 번째 이점을 제공하지만 첫 번째 이점은 제공하지 않는 것 같습니다.
nispio

아, 실제로,이 경우 24.4의 새로운 행동은 당신이 신경 쓰지 않는 부분을 향상시킵니다.
Stefan

1

나는 처음 에이 문제에 대한 내장 솔루션이 부족하여 화가 났으며 내장 솔루션 인 kill-rectangle이 있음을 깨달았습니다.

당신이 같은 텍스트를 가지고 있다고

AAA BBBBBBBBB
AAA BBB
AAA BBBBBBB

그러나 C와 D 행 사이와 같이 텍스트의 'B'부분을 다른 곳에 원하십시오.

CCCCC
CCC
DDDD
DD

B 직사각형 ( C-x r M-w) 을 복사 한 다음 첫 번째 'D'에 점을 놓은 다음 직사각형을 뒤로 잡아 당기면 ( C-x r y)

CCCCC
CCC
BBBBBBBBBDDDD
BBB      DD
BBBBBBB  

당신이 정말로 원했던 곳

CCCCC
CCC
BBBBBBBBB
BBB
BBBBBBB
DDDD
DD

'B'의 사각형을 복사하여 새 위치로 잡아 당기는 것이 당연한 것처럼 보일 수 있지만 더 나은 해결책은 단순히 'A'와 'B'라인을 복사하고 'C'와 ' D '라인.

그런 다음 'A'가 포함 된 사각형을 표시하고 kill-rectangle( C-x r k)를 사용하여 원하는 결과로 끝납니다.

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