キルした長方形をキルリングにコピーする方法


11

バッファからテキストの長方形を頻繁に抽出しますが、テキストが長方形ではないかのようにヤンクしたいと思います。現在キルされている長方形をキルリングに追加する方法はありますか?

GNU Emacsマニュアルは、この言うことがあります。

長方形を「殺す」ことは、通常の意味で殺すことではありません。長方形はキルリングに保存されませんが、最後に殺された長方形のみを記録する特別な場所に保存されます。これは、長方形のヤンクは線形テキストのヤンクとは非常に異なるため、異なるヤンクコマンドを使用する必要があるためです。ヤンクポップは長方形には定義されていません。

しかし、私は基本的に私が望む動作を得ることができます

  • M-> バッファの最後に移動
  • C-x r y ヤンク長方形
  • C-x C-x 交換ポイントとマーク(新しくヤンクされたラインを選択)
  • C-w 選択範囲をキルリングに殺す

キルされた長方形をキルリングエントリに変換するより良い方法はありますか?


リンクされたソリューションはあなたが求めたものではありませんが、それはあなたが望むように長方形をヤンクし
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)))))

礼儀ErgoEmacs


3

長方形をキルリングに入れることの特別な点はわかりませんが、Emacs-24.4にアップグレードするC-x SPC .... M-wと、長方形を選択してキルリングに配置できます。その後、C-yその長方形をヤンクします(同じことですC-x r yが、そうです)。


キルリングには「特別な」2つの点があります。(私にとって)最も重要なのは、キルリングのアイテムをヤンクする方法です。簡単に言うと、ヤンクは既存のテキストを右にシフトするのではなく、下にシフトします。キルリングの使用には、キルされたテキストの履歴を維持するという副次的な利点もあります。24.4は2番目の利点を提供するかもしれませんが、最初の利点は提供しないようです。
nispio 2014年

実際、その場合、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-rectangleC-x r k)を使用して目的の結果で終了します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.