Tôi đang làm việc trên một tập lệnh đã trở nên khá phức tạp. Tôi nghi ngờ có một số phần có mã gần như giống hệt nhau. Tôi có thể (và làm thế nào tôi có thể) mở tập tin trong vim, với hai (hoặc nhiều) cửa sổ trên bộ đệm, và diff các nội dung của các cửa sổ trên cùng một tập tin? vimdiff dường như chỉ hoạt động trên hai tệp. Nếu tôi tạo một bản sao của tệp và cố gắng vimdiff hai phiên bản, nguồn gốc khác vẫn bị khóa ở đầu tệp. Mặc dù tôi có thể unscroll-lock các cửa sổ, và di chuyển các cửa sổ đến các phần của tập tin tôi muốn so sánh các diffs không hiển thị. Bất kỳ gợi ý hay mẹo nào? Tôi có thể cắt và dán các phần tôi muốn so sánh với các tệp khác nhau và sau đó áp dụng vimdiff nhưng sau đó tôi có nguy cơ bị mất trong phần nào đến từ đâu khi tôi cố vá các tệp riêng lẻ lại với nhau và tôi cảm thấy chắc chắn phải đơn giản hơn , cách dễ dàng hơn.Các cửa sổ khác nhau trong vim
Trả lời
Những gì tôi thường làm là diff để một bản sao
:%w %.alt
:vert diffsplit %.alt
Và sau đó happiliy sắp xếp lại các phiên bản 'alt' để các bit giả phù hợp được liên kết.
Lưu ý rằng (có lẽ) git chứa spiffy merge/diff bò-quyền hạn đó sẽ có thể phát hiện sub-file chuyển khối thay đổi.
Mặc dù tôi chưa thực sự đưa điều này vào thực tế, tôi có linh cảm rằng plugin git rất đẹp fugitive
cho vim có thể tận dụng một số mã lực này để làm việc này dễ dàng hơn. Lưu ý: đầy đủ mong đợi này để yêu cầu scriptinh trước khi có thể sử dụng, nhưng tôi vẫn nghĩ rằng nó sẽ được tốt đẹp để chia sẻ ý tưởng này
Là một thay thế (có lẽ bạn có thể chia sẻ một kịch bản nếu bạn nhận được để nó đầu tiên!) giải pháp mà tôi đã sử dụng thỉnh thoảng và hoạt động rất độc đáo theo ý kiến của tôi là linediff.vim.
Nó cho phép bạn sử dụng chế độ trực quan để chọn hai nội dung văn bản từ bộ đệm tùy ý (hoặc tương tự cho vấn đề đó) và chạy vimdiff trên chúng. Vẻ đẹp của nó, đó là khi bạn chỉnh sửa và lưu các bộ đệm diff tạm thời, bạn cập nhật các bộ đệm ban đầu với các thay đổi, mà không lưu.
Một trong các trường hợp sử dụng của tôi là khi tôi giải quyết các vấn đề hợp nhất liên quan đến việc tái cấu trúc tập lệnh và sắp xếp lại, trong đó một hàm đã được di chuyển và có lẽ cũng đã được sửa đổi. Để đảm bảo bạn không bị mất bất kỳ sự sửa đổi nào đến từ tổ tiên, bạn chỉ cần phân biệt hai phiên bản của hàm một cách trực quan bằng cách chọn chúng và chạy lệnh lót.
- 1. Điều hướng giữa các cửa sổ VIM theo cách khác
- 2. Cuộn cửa sổ kia trong VIM Split
- 3. Đóng cửa sổ chia nhỏ trong Vim mà không thay đổi kích thước cửa sổ khác
- 4. Chuyển đối tượng đến các cửa sổ khác nhau dạng
- 5. Cửa sổ ứng dụng được gửi sau các cửa sổ khác khi đóng các chủ đề khác nhau (C#)
- 6. VIM: Tìm trong nhiều chia cửa sổ
- 7. Hủy cửa sổ tách trong Vim
- 8. sửa kích thước cửa sổ trong vim
- 9. kết quả tìm kiếm đường ống đến các tab/cửa sổ/bộ đệm khác trong VIM
- 10. Cách mở tệp mới trong vim trong cửa sổ mới
- 11. Vim: có lệnh nào để chuyển đổi các cửa sổ
- 12. Có thể gỡ lỗi nhiều luồng trong nhật thực trong các cửa sổ khác nhau không?
- 13. Sự khác nhau giữa `$ (cửa sổ) .load (function() {})` và `$ (function() {})`
- 14. Cách giữ cửa sổ đầu ra lệnh trong vim
- 15. Xử lý WM_NCACTIVATE trong cửa sổ khởi động chặn tất cả các cửa sổ khác
- 16. Mở 2 sơ đồ Visio trong các cửa sổ khác nhau
- 17. Vim: wildcard grep của không hoạt động trong cửa sổ
- 18. Làm cách nào để mở một cửa sổ dọc khác (: vsp) ở bên trái trong vim?
- 19. phím tắt làm cửa sổ vim/tấm bằng nhau ở độ cao
- 20. tìm hiểu các cửa sổ ở chế độ cạnh nhau
- 21. omnicompletion Vim: cửa sổ xem trước tùy chọn
- 22. Đóng Cửa sổ từ Khác Trong Wpf
- 23. vim: mở cửa sổ xem trước mà không cần di chuyển văn bản trong cửa sổ chính
- 24. các đường di chuyển từ cửa sổ này sang cửa sổ khác
- 25. "Thu nhỏ" cửa sổ VIM dọc chia tách
- 26. Làm cách nào để đóng tất cả các cửa sổ trong tab hiện tại của vim
- 27. vài cửa sổ/bộ đệm cùng nhau trong emacs?
- 28. Có một cửa sổ wpf bên trong một cửa sổ wpf khác
- 29. Làm cách nào để xem các biểu diễn khác nhau của các số nguyên trong cửa sổ xem Eclipse?
- 30. Không thể chuyển chức năng từ cửa sổ này sang cửa sổ khác trong IE
Được rồi, sử dụng% để tham chiếu đến tên tệp của bộ đệm hiện tại rất hay, tôi không biết điều đó! Nhưng tôi vẫn không chắc chắn làm thế nào để sắp xếp lại các phiên bản đúng alt để các bit phù hợp có được liên kết. : se noscrollbind dường như giúp đỡ, nhưng làm thế nào tôi có thể nhận được vim để làm nổi bật sự khác biệt giữa hai cửa sổ? – ChrisDR
Tôi có nghĩa là sắp xếp lại (tôi sử dụng C/C#, vì vậy 'd2] M' xóa hai phương pháp, điều hướng đến điểm chèn,' P' và voila); Ngoài ra 'phiên bản đúng' là một lỗi đánh máy cho 'phiên bản alt'. Tôi biết đây vẫn là lao động thủ công, nhưng (ngoài ý tưởng sử dụng phát hiện bản sao/di chuyển của Git) tôi không biết cách nào tốt hơn. Bí quyết để sử dụng một bản sao tạm thời là loại gọn gàng. – sehe