2010-03-24 21 views
7

Tôi đã đọc VimdiffViewing differences with Vimdiff cộng thực hiện tìm kiếm google khác nhau sử dụng những câu như "vimdiff nhiều", "vimdiff git", "vimdiff lệnh" vvHow Do You Get các bufspec Trong khi sử dụng vimdiff Qua Git

Khi sử dụng do hoặc diffg Tôi nhận được lỗi "Nhiều hơn hai bộ đệm trong chế độ khác, không biết cái nào để sử dụng".

Khi sử dụng diffg v: fname_in Tôi nhận được "Không có bộ đệm phù hợp cho v: fname_in".

Từ các tài liệu vimdiff:

: [phạm vi] diffg [et] [bufspec]
Sửa đổi bộ đệm hiện tại để hoàn tác khác biệt với một đệm. Nếu [bufspec] được đưa ra, bộ đệm đó được sử dụng. Nếu [bufspec] đề cập đến bộ đệm hiện tại thì không có gì xảy ra. Nếu không, điều này chỉ hoạt động nếu có một bộ đệm khác ở chế độ khác nhau .

và nhiều hơn nữa:

Khi 'diffexpr' không phải là trống rỗng, Vim đánh giá để có được một tập tin khác trong các định dạng đề cập. Các biến này được thiết lập để các tên tập tin được sử dụng:

v: fname_in tập tin gốc
v: phiên bản mới fname_new của cùng một tập tin
v: fname_out kết quả diff tập tin

Vì vậy, tôi cần phải nhận được tên của bufspec, nhưng các biến mặc định (fname_in, fname_new và fname_out) không được đặt.

Tôi chạy lệnh git mergetool trên hộp linux thông qua thiết bị đầu cuối.

[Chỉnh sửa] Giải pháp một phần đưa ra nhiều câu hỏi hơn. Tôi đã sử dụng "tên tệp" ở cuối bộ đệm. Nó chỉ là một câu trả lời một nửa, bởi vì đôi khi tôi nhận được một tập tin không tồn tại lỗi. Tôi tin rằng nó luôn là phiên bản từ xa của tập tin "không tồn tại". Tôi nghi ngờ điều này có liên quan đến git và lập chỉ mục.

Làm thế nào để bạn nhận được giá trị bufspec nhất quán trong khi sử dụng vimdiff thông qua git-mergetool?

Trả lời

8

Đối số [bufspec] ở trên có thể là số bộ đệm, mẫu cho tên bộ đệm hoặc một phần của tên đệm. Ví dụ:

  • :diffget Sử dụng bộ đệm khác mà là ở chế độ diff
  • :diffget 3 Sử dụng bộ đệm 3
  • :diffget v2 Sử dụng bộ đệm mà phù hợp v2 và đang trong chế độ khác (ví dụ, file.c.v2)

Tôi luôn sử dụng số lượng bộ đệm.

+0

Vì vậy, sử dụng: diffget và bất cứ điều gì là nhân vật kết hợp sau dấu chấm thứ hai? –

+1

Thật tuyệt vời. Bạn sẽ nghĩ rằng sẽ dễ đoán. Đoán tôi đã nhận được quá khó chịu để xem một cái gì đó rất đơn giản. * thở dài * Cảm ơn bạn Cảm ơn bạn! –

4

Nhập "2", sau đó nhấn ctrl-g, nó sẽ hiển thị cho bạn số bộ đệm và tệp.

0

Để liệt kê những con số có sẵn đệm và tên (giá trị hợp lệ cho bufspec), sử dụng :ls

(Từ tiêu đề của câu hỏi này, đó là những gì tôi nghĩ đã được yêu cầu, và là lý do tại sao tôi nhìn đây.)

:ls sẽ liệt kê các số và tên đệm. Cửa sổ đang chứa con trỏ sẽ được biểu thị bằng %:

:ls 
    1 #a "Gemfile.lock"     line 1 
    2 %a "Gemfile.lock.LOCAL.4828.lock" line 1 
    3 a "Gemfile.lock.BASE.4828.lock" line 0 
    4 a "Gemfile.lock.REMOTE.4828.lock" line 0 

Khi sử dụng diffget hoặc diffput, bất cứ chuỗi con mà độc đáo phù hợp với một tên đệm có thể được sử dụng như là bufspec tranh cãi. Ví dụ, giả sử nhà nước phản ánh trong đoạn mã trên, chúng ta có thể sử dụng:

diffget REM

để lấy Gemfile.lock.REMOTE.4828.lock 's phiên bản của sự thay đổi đó hiện đang được con trỏ.

Các vấn đề liên quan