2012-01-08 35 views
14

Tôi đang sử dụng vim để lập trình. Vào đầu ngày, tôi sẽ mở một tập tin và tiến hành để làm một vài cửa sổ chia tách và mở một số tập tin vào bộ đệm để họ có sẵn. Cho đến gần đây, điều này mới chỉ hoạt động.Tại sao chia cửa sổ buộc phải đọc?

Trong tuần qua, dù vậy, có điều gì đó đã thay đổi; một trong những vùng đệm có thể ghi của tôi đang chuyển sang chế độ chỉ đọc và tôi không biết tại sao. Đây là chuỗi các lệnh:

  1. mở fileA.h
  2. vsplit ./
  3. mở fileA.cpp
  4. Cw Cw để chuyển sang cửa sổ chứa fileA.h
  5. sp ./

Đối với các bước 1-4, tất cả các cửa sổ đều có thể chỉnh sửa. Khi tôi thực hiện bước 5, cửa sổ duyệt tập tin mới là chỉ đọc (như mong đợi), nhưng bây giờ cửa sổ giữ fileA.cpp cũng được đánh dấu là chỉ đọc. fileA.h vẫn có thể chỉnh sửa được. Tại sao chuyện này đang xảy ra?

Để làm tôi bối rối hơn nữa, nếu tôi không thực hiện bước 4 thì không có vấn đề gì (tức là tôi chia tập tin giữ cửa sổA.cpp thay vì tệpA.h). Ngoài ra, nếu tôi thực hiện 'sp fileB.h' ở bước 5 thay vì chia nhỏ thành trình duyệt tệp thì không có vấn đề gì.

+2

các plugin bạn đang sử dụng là gì? Nói chung, hãy cố gắng loại bỏ các plugin gây nhiễu. Tôi đoán, bạn đang sử dụng một cái gì đó như NERDTree và nó can thiệp với một số ánh xạ của plugin khác – sehe

+0

Liệu nó vẫn xảy ra với 'vim -u NONE'? Nếu không, @sehe có lẽ đúng. – ephemient

Trả lời

34

Dường như đây có thể là lỗi trong plugin netrw. Tôi đã thử nghiệm với một số phiên bản của netrw với hai bản xây dựng của Vim 7.3 (MacPorts vim 7,3-353, và MacPorts MacVim “snapshot64” 7,3-390):

  • v140 (bao gồm trong MacPorts vim: 7,3-353)
    Chỉ được thử nghiệm với MacPorts vim build.
  • v141 (từ vim.org/scripts netrw page)
  • v142 (từ trang vim.org/scripts netrw)
  • v143 (bao gồm trong MacPorts MacVim: 7,3-390)
    Tested chỉ với MacPorts MacVim xây dựng.
  • v144b (trước khi phát hành từ netrw author’s Vim page)

Bạn có thể kiểm tra phiên bản netrw hoạt động của bạn với :let g:loaded_netrwPlugin.

v140 v142 qua đều có hành vi hợp lý khi sao chép kịch bản của bạn:

  • Chỉ có đệm netrw (từ sp .; phía bên phải, cửa sổ phía trên) là read-only.
    Bộ đệm fileA.cpp trong cửa sổ bên trái vẫn không phải chỉ đọc.

Với v143 và v144b tôi đã có thể để tái tạo hành vi của bạn:

  • Cả hai bộ đệm netrw (bên phải, cửa sổ phía trên) và fileA.cpp đệm (bên trái) trở thành read-only.
  • Ngoài ra (tức làkhông được OP báo cáo, nhưng dường như có liên quan), cửa sổ fileA.cpp ở phía bên trái trở thành cửa sổ hoạt động.
    Thông thường, phía bên phải, cửa sổ phía trên (một từ sp .) sẽ hoạt động.

Cửa sổ fileA.cpp ban đầu là cửa sổ netrw (từ vsp .). Đoán của tôi là một cái gì đó trong v143 và v144b là một chút quá hăng hái trong việc đặt lại cửa sổ cũ vì lý do nào đó (nó có lẽ không nên chạm vào cửa sổ đó cả). sp fileB.h tránh vấn đề bằng cách không gọi netrw (tức là vấn đề không phải là với cửa sổ tách, nhưng với một cái gì đó mà netrw hiện khi nó tạo bộ đệm danh sách thư mục).


Nếu vấn đề của bạn đến từ netrw (tức là hành vi của bạn phù hợp với mô tả của tôi, và niêm yết thư mục đệm của bạn có các văn bản Netrw Directory Listing và (ví dụ) (netrw v143) ngày thứ hai line-giả sử bạn đã không vô hiệu hóa các biểu ngữ netrw) , sau đó bạn có thể sửa chữa nó bằng cách cài đặt một phiên bản cũ hơn (?) của netrw (tức là v142).

netrw được đóng gói dưới dạng "kho lưu trữ vimball". Plugin vimball đi kèm với Vim 7.0 trở lên. Bạn chỉ cần một tập tin vimball để cài đặt nó vào thư mục đầu tiên trong số runtimepath (thường là ~/.vim).

:e /path/to/netrw.vba.gz 
:so % 
:q 

Nếu bạn đang sử dụng pathogen để cô lập plugin Vim của bạn (rất khuyến khích!), Bạn có thể cài đặt nó vào một thư mục gói thay vì:

:e /path/to/netrw.vba.gz 
:UseVimball ~/.vim/bundle/netrw 
:q 
+2

Đây là một số nỗ lực phân tích, +1 – sehe

+0

Phản hồi tuyệt vời! Có vẻ như tôi có v143 của netrw. Theo hướng dẫn của bạn, tôi đã hạ cấp xuống 142 và hiện đang hoạt động. FYI, tôi đã nhìn thấy hành vi với tập trung lấy tập tin. Tôi chỉ quên ghi lại chi tiết đó. – ryan0270

+0

Cảm ơn bạn Chris vì câu trả lời tuyệt vời của bạn. Trợ giúp chẩn đoán và giải pháp chi tiết - rất hữu ích. –

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