Magit: Sao chép văn bản từ phần Giai đoạn không có ký tự


7

Windows 10, Emacs 25.1, Magit

Tôi chọn một số văn bản (Shift + Mũi tên xuống) từ phần Thay đổi chưa được chỉnh sửa . Đây là một ảnh chụp màn hình:

Chọn văn bản

Sau đó tôi dán vào một bộ đệm khác ( *scratch*).

Đây là kết quả:

Kết quả

Có thể tước các +s hàng đầu khi giết các dòng từ hunk diff?

Câu trả lời:


8

Magit hiện tại không hỗ trợ, nhưng nó có thể thực hiện được. Có lẽ tôi sẽ làm điều đó sớm thôi. Đôi khi tôi cũng có thể sử dụng tính năng đó.

Trong khi đó, sử dụng macro để thay thế +s sau khi kéo dài : <f3> C-d C-n <f4>....


1
Sau khi thực hiện, tôi sẽ làm tiếp: 1) Đặt con trỏ lên trước "+", 2) Lệnh bắt đầu <C-return>( cua-set-rectangle-mark), 3) Chỉ chọn "+" (một cột) và nhấn Del để xóa tất cả các ký hiệu "+"
Alex

@Alex Bạn có thể không sử dụng cua-rectangle-mark-modetừ trong bộ đệm magit?
0x5453

Tôi sử dụng cua-rectangle-mark-modetrong một bộ đệm khác (không phải magit) sau văn bản yank.
Alex

Không có CUA, sau khi yank : C-a C-f C-x C-x C-x r d.
Alan Thứ ba

4

Cho đến khi Magit hỗ trợ một cái gì đó như thế này, hành vi dễ dàng nhận được bằng một lệnh tùy chỉnh. Tôi có một cái gì đó tương tự như lệnh sau trong cấu hình của tôi. Nếu bạn gọi nó bằng một đối số tiền tố, nó sẽ loại bỏ các dấu khác biệt hàng đầu.

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

Chỉnh sửa : Với phiên bản phát triển của Magit (phiên bản v2.91.0), bạn có thể loại bỏ các điểm khác biệt bằng cách đánh dấu một vùng của một hunk và gọi magit-copy-section-valuebằng một đối số tiền tố.


Không có tài liệu trong cấu hình của bạn?! Vì xấu hổ. :) Hoạt động tốt mặc dù +1.
Basil

1

Từ bỏ câu trả lời của Kyle Meyer, nếu bạn muốn sao chép diff mà không cần nhấn phím tiền tố, bạn có thể sử dụng như sau:

(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))))
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.