Hợp nhất các thay đổi bên ngoài được thực hiện trong khi chỉnh sửa


10

Nếu có những thay đổi bên ngoài đối với tệp đang được chỉnh sửa trong Vim, tôi hiểu rằng tôi có thể tải lại nội dung của tệp bằng cách :edit. Nhưng, giả sử rằng (bên trong) tôi đã thực hiện các thay đổi đối với tệp mà tôi muốn giữ lại. Có cách nào để tích hợp hai bộ thay đổi (bên ngoài và bên trong) không? Từ những gì tôi hiểu, :editchỉ đơn giản là có những thay đổi bên ngoài.


3
Có phải đọc :h autoreadkhông? Có phải đó là những gì bạn đang tìm kiếm?
statox

2
:autoreadđọc các thay đổi bên ngoài nhưng trong trường hợp các thay đổi được thực hiện đối với tệp đang được đọc tự động, vim sẽ thông báo cho tôi rằng đã có các thay đổi được thực hiện bên ngoài đối với tệp kể từ khi tôi thực hiện các chỉnh sửa nội bộ của mình. Tôi đang tìm cách để hợp nhất những thay đổi bên ngoài với những thay đổi bên trong.
fuzzybear3965

5
Bạn đang tìm kiếm :h :DiffOrig?
Christian Brabandt

@ChristianBrabandt, không bao giờ là quá muộn phải không? Đây là một câu trả lời tuyệt vời. Tôi không biết rằng điều này đã tồn tại.
fuzzybear3965

Câu trả lời:


3

Để giải thích về nhận xét của Christian Brabandt , đây là một sự phân rã của DiffOriglệnh:

Lệnh đầy đủ:

command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis
    \ | wincmd p | diffthis

Phân hủy:

command DiffOrig        " create a new command named DiffOrig
vert new                " open a new buffer splitted vertically
| set bt=nofile         " set buffer type to scratch 
| r #                   " read the alternate buffer (opened file to diff)
| 0d_                   " delete the first line
| diffthis              " diff the current buffer
| wincmd p              " move cursor to opened file 
| diffthis              " diff the current buffer

Một phiên bản thay thế sử dụng ++edittùy chọn cho việc đọc, nó giữ các giá trị tùy chọn như thể chỉnh sửa một tệp.

Người giới thiệu:

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.