Magit:「+」の文字なしでステージセクションからテキストをコピー


7

Windows 10、Emacs 25.1、Magit

[ ステージングされていない変更]セクションからテキスト(Shift +下矢印)を選択します。ここにスクリーンショットがあります:

Select_text

次に、別のバッファーに貼り付け*scratch*ます()。

これが結果です:

Result_paste

+差分ハンクから行を削除するときに先頭のs を取り除くことは可能ですか?

回答:


8

Magitは現在これをサポートしていませんが、できるはずです。私はおそらくそれをすぐにやります。私も時々その機能を使うことができました。

一方、マクロを使用して、+ヤンク後にsを置き換えます<f3> C-d C-n <f4>...


1
ヤンクした後、次の操作を行います。1)最初の「+」の上にカーソルを置き、2)開始コマンド<C-return>cua-set-rectangle-mark)、3)「+」のみ(1列)を選択し、Delキーを押してすべての記号「+」を削除します
Alex

@Alex cua-rectangle-mark-modemagitバッファ内から使用できませんか?
0x5453 2017年

cua-rectangle-mark-modeテキストをヤンクした後、(magitではなく)別のバッファーで使用します。
Alex

CUAなし、ヤンク後:C-a C-f C-x C-x C-x r d
アラン

4

Magitがこのようなものをサポートするまで、動作はカスタムコマンドで簡単に取得できます。構成に次のようなコマンドがあります。前置引数を付けて呼び出すと、先頭のdiffマーカーが削除されます。

(defun km/magit-copy-region-hunk (&optional no-column)
  (interactive "P")
  (when (magit-section-internal-region-p)
    (magit-section-when hunk
      (deactivate-mark)
      (let ((text (buffer-substring-no-properties
                   (region-beginning) (region-end))))
        (kill-new (if no-column
                      (replace-regexp-in-string "^[ \\+\\-]" "" text)
                    text))))))

編集:Magitの開発バージョン(v2.91.0になる予定)では、ハンクの領域をマークmagit-copy-section-valueし、プレフィックス引数を使用して呼び出すことで、差分マーカーを取り除くことができます。


構成にドキュメント文字列はありませんか?残念です。:) +1でもうまくいきます。
バジル

1

カイルマイヤーの答えから離れて、プレフィックスキーを押す必要なしに差分をコピーしたい場合は、以下を使用できます:

(defun copy-diff-region ()
  "Copy diff region without + or - markers."
  (interactive)
  (deactivate-mark)
  (let ((text (buffer-substring-no-properties
               (region-beginning) (region-end))))
    (kill-new (replace-regexp-in-string "^[\\+\\-]" "" text))))
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.