Nếu, tại dấu nhắc lệnh, tôi chạySuy vi diff đặt khi sao chép ranh giới giữa vimdiff cửa sổ
vimdiff file1 file2
tôi nhận được một trường hợp vim có hai tập tin mở side-by-side. Giả sử rằng các văn bản trong các tập tin trông như thế này (file1 là bên trái, file2 ở bên phải):
╔═══════╤═══════╗
║foo │-------║
║bar │bar ║
║grue │-------║
║~ │~ ║
║~ │~ ║
╚═══════╧═══════╝
Bây giờ giả sử rằng con trỏ của tôi là trên "f" của "foo" và rằng tôi muốn để sao chép dòng đầu tiên của tệp1 vào dòng đầu tiên của tệp2.
Một cách để làm điều này là để chọn và yank (copy) đường với v $ y, và sau đó sử dụng Ctrl + wl để di chuyển con trỏ trên vào dòng đầu tiên của file2, và sau đó gõ p để dán dòng đã sao chép. Nếu tôi làm điều này và sau đó tôi quyết định tôi không thực sự muốn làm điều đó sau khi tất cả, tôi có thể bấm u để hoàn tác lệnh dán tôi đã thực hiện trong tệp2.
Một cách khác để làm điều đó là sử dụng lệnh đặt lệnh dp khác. Tuy nhiên, nếu sau khi làm điều này, tôi quyết định không làm như vậy, tôi không thể hoàn tác nó đơn giản bằng cách nhấn u vì con trỏ của tôi vẫn nằm trong tệp1 và lệnh u sẽ hoàn tác thay đổi gần đây nhất đối với tệp1 , không phải thay đổi gần đây nhất đối với tệp2. Vì vậy, thay vào đó tôi phải sử dụng Ctrl + w l hoặc Ctrl + w w để di chuyển con trỏ đến cửa sổ cho file2 và sau đó báo chí u. Vì vậy, câu hỏi của tôi là: sau khi tôi đã sử dụng dp như trên, có cách nào dễ dàng để tôi hoàn tác nó mà không phải di chuyển con trỏ đến cửa sổ của tệp khác không? Không.
Điều này có thể cư xử kỳ lạ nếu có nhiều hơn hai cửa sổ. (Chỉ cần một lưu ý, dù sao một câu trả lời hoàn hảo cho câu hỏi). –