2013-05-30 28 views
23

Khi phân biệt 2 tệp trong VIM, tôi thích các dòng được bọc. Tuy nhiên, vimdiff đặt gói thành tắt theo mặc định.Buộc vimdiff để bọc dòng?

Có cách nào để tự động thiết lập giới hạn dòng cho mọi khác biệt không?

+0

Cảm ơn thông tin của bạn. Nó hoạt động nhưng chỉ khi vim được bắt đầu ở chế độ khác. Tôi cũng quan tâm đến buộc quấn dòng khi một diff được bắt đầu từ bên trong vim. Nó cũng có thể từ một lệnh tương tự? Cảm ơn! – mgouin

Trả lời

22

tôi sử dụng như sau:

autocmd FilterWritePre * if &diff | setlocal wrap< | endif 

FilterWritePre được kích hoạt ngay lập tức trước khi một diff tạo được ghi vào bộ đệm, và setlocal wrap< sao chép giá trị toàn cầu của wrap. Tất nhiên nó cũng có thể chỉ đơn giản là lực lượng setlocal wrap.

+0

Cảm ơn bạn rất nhiều! Điều này thật đúng với gì mà tôi đã tìm kiếm. Tôi sẽ bỏ phiếu, nhưng tôi không thể (quá mới) ... – mgouin

+0

Tôi không biết tại sao, nhưng điều này không làm việc. Tôi đang sử dụng vim 7 trên máy debian. Mặc dù vậy, câu trả lời của user2442259 hoạt động. – eddy147

+0

@ eddy147 Cài đặt toàn cầu của bạn là 'wrap' hay' nowrap'? Nếu sau này, hãy thử cùng một 'autocmd' với' setlocal wrap' thay vì 'setlocal wrap <'. –

19

Bạn có thể đặt thông tin sau vào vimrc của mình.

au VimEnter * if &diff | execute 'windo set wrap' | endif 
+1

Trên thực tế, điều này làm việc cho tôi và somhow không phải là một trong đó là chấp nhận câu trả lời. – BHS

13

Khi vim đã được bắt đầu, các lệnh để bắt đầu một diff và một bọc là, trên mỗi file cửa sổ chia:

:diffthis 
:set wrap 

Tuy nhiên, diff + bọc là không đúng hiển thị:

Nếu bạn có một hàng dài trên một tệp và một dòng ngắn hoặc thiếu ở dòng còn lại, dòng dài sẽ chiếm, nói, 2 dòng ở phía đầu tiên, bởi dòng ngắn hoặc thiếu sẽ chỉ chiếm 1 dòng trên dòng thứ hai bên.

Kết quả này theo một sự thay đổi theo chiều dọc theo chiều dọc của 2 tệp. Chắc chắn, màu sắc giúp bù đắp cho sự thay đổi này một cách trực quan. Nhưng trên một số dòng khác nhau, sự thay đổi có thể cao hơn chiều cao của cửa sổ, làm cho không thể đọc được.

Vì vậy, câu hỏi chưa được giải quyết đầy đủ ... Vui lòng thông báo.

+2

': windo set wrap' đặt quấn trong cả hai phần. –

2

Tôi phải giải quyết câu hỏi này cho bản trình diễn nơi tôi muốn vimdiff để bọc chỉ khi được khởi chạy từ một thiết bị đầu cuối nhất định.

Cuối cùng tôi đành về thô:

alias vimdiff='vimdiff +"windo set wrap"' 
vimdiff file.orig file 
1

Bạn có thể chạy này

vimdiff -c 'set wrap' -c 'wincmd w' -c 'set wrap' file1 file2 
Các vấn đề liên quan