Tại sao vim thêm ^ J vào cuối macro của tôi?


7

Tôi đã viết macro ngắn giúp tôi grep cho từ dưới con trỏ. Đây là trong .vimrc của tôi:

let @a=":! git grep ^R^W^M"

Tuy nhiên, khi tôi mở vim và chạy :reg a, tôi thấy như sau:

"a   :! git grep ^R^W^M^J

Bạn có thể thấy một ^ J đã được thêm vào macro.

Nếu tôi xóa ^ M trong tập lệnh của mình thì ^ J cũng biến mất.

Có vẻ như ^ J hoạt động tương tự như ^ M. Vì vậy, nó giống như tôi có hai ^ M. Đây không phải là điều tôi muốn, vì tôi không thể thấy kết quả của lệnh. Cửa sổ chỉ nhấp nháy trước khi tôi có thể đọc nó.

Tôi đã nhận được kịch bản của mình để làm việc bằng cách dán và sau đó sao chép nó. Vấn đề chỉ phát sinh khi tôi cố tải nó bằng .vimrc.

Câu trả lời:


1

Vì lý do kỳ lạ, nó hoạt động tốt nếu bạn thay thế ^M^Jbằng ^J:

:let @a=":! git grep \<c-r>\<c-w>\<c-j>"
:reg a
"a   :! git grep ^R^W^J

@ahoạt động như mong đợi.

(Tôi đang sử dụng các \<...>ký hiệu vì nó là dễ dàng hơn để sao chép dán.)


Về mặt kỹ thuật, ^Mlà sự trở lại vận chuyển và ^Jlà dòng mới. Tôi không chắc sự khác biệt quan trọng như thế nào trong trường hợp này.


1
Tôi sẽ bắn nó, nhưng làm cách nào để vào ^ J? Tôi biết cách nhập ^ M, nhưng không ^ J.
dùng2445507

Ồ, tôi hiểu rồi. Tôi sẽ sử dụng \ <...>, sau đó.
user2445507

@ user2445507 làm thế nào để bạn nhập CM?
muru

^ M được nhập bằng cách nhấn <ctrl + v> và sau đó <ctrl + m>. <ctrl + v> chuyển sang một số chế độ đặc biệt cho phép bạn viết các ký tự đặc biệt bắt đầu bằng ^.
dùng2445507

1
@ user2445507 và điều đó không hiệu quả với ^ J?
muru
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.