Öldürülmüş dikdörtgeni öldürme halkasına kopyalama


11

Sıklıkla arabellekten bir metin dikdörtgeni ayıklarım ama sonra metni sanki bir dikdörtgen değil gibi çekmek istiyorum. Mevcut öldürülmüş dikdörtgeni öldürme halkasına eklemenin bir yolu var mı?

GNU Emacs Manuel şunu söylemek etti:

Bir dikdörtgeni “öldürmek” olağan anlamda öldürmüyor; dikdörtgen öldürme halkasında değil, yalnızca en son öldürülen dikdörtgeni kaydeden özel bir yerde saklanır. Bunun nedeni, bir dikdörtgenin sorulması, doğrusal metnin sorulmasından o kadar farklı olmasıdır ki, farklı yank komutlarının kullanılması gerekir. Yank-popping dikdörtgenler için tanımlanmamıştır.

Ancak temelde istediğim davranışı elde edebilirim

  • M-> ara belleğin sonuna git
  • C-x r y yank dikdörtgen
  • C-x C-x değişim noktası ve işareti (yeni çekilmiş satırları seçer)
  • C-w seçimi öldürme halkasına öldür

Öldürülmüş bir dikdörtgeni öldürme halkası girişine dönüştürmenin daha iyi bir yolu var mı?


Bağlantılı çözüm istediğin şey değil, ama istediğin gibi dikdörtgenler çekiyor
jue

Yanıtlar:


6

Sorunuzu anladıysam, şöyle bir şey arıyorsunuz:

(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)))))

ErgoEmacs'ın izniyle


3

Dikdörtgenin kill-ring'e sahip olmasının özel olduğu konusunda emin değilsiniz, ancak Emacs-24.4'e yükseltirseniz, şunları yapabilirsiniz: C-x SPC .... M-wbir dikdörtgen seçmek ve kill-ring'e yerleştirmek. Bundan sonra bu C-ydikdörtgeni çekecek (aynı şey C-x r y, tho).


Kill ringinde "özel" olan iki şey var. En önemlisi (benim için) öldürme halkasından eşyaların çekilme şeklidir. Basitçe söylemek gerekirse, yank mevcut metni sağa kaydırmak yerine aşağı kaydırır. Öldürme halkasını kullanmanın, öldürülen metnin geçmişini muhafaza etmenin yan yararı da vardır. 24.4 kulağa ikinci faydayı sağlayabilir ama ilk faydayı sağlayamayabilir.
nispio

Ah, aslında, bu durumda 24.4'ün yeni davranışı, umursadığınız kısmı geliştirir.
Stefan

1

Başlangıçta bu soruna yerleşik bir çözüm bulunamamasından rahatsız oldum, sonra yerleşik bir çözüm olduğunu fark ettim: kill-rectangle.

Diyelim ki metniniz var

AAA BBBBBBBBB
AAA BBB
AAA BBBBBBB

Ancak metnin 'B' kısmını, bu C ve D satırları gibi başka bir yerde isteyin:

CCCCC
CCC
DDDD
DD

B dikdörtgeni ( C-x r M-w) kopyalar ve ardından noktayı ilk 'D' ye yerleştirirseniz, dikdörtgeni geri çeker ( C-x r y),

CCCCC
CCC
BBBBBBBBBDDDD
BBB      DD
BBBBBBB  

gerçekten istediğin yer

CCCCC
CCC
BBBBBBBBB
BBB
BBBBBBB
DDDD
DD

'B'lerin dikdörtgenini kopyalayıp yeni konuma kopyalamak doğal görünebilir, ancak daha iyi bir çözüm' A ve 'B' satırlarını kopyalamak ve 'C' ve 'arasındaki bütünlüklerine sokmaktır. D 'çizgileri.

Ardından, 'A'yı içeren dikdörtgeni işaretleyin ve istenen sonuçla bitirmek için kill-rectangle( C-x r k) kullanın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.