2010-09-02 31 views
6

Có một tệp cụ thể trên máy tính của tôi mà Vim nhấn mạnh khi mở ở chế độ chỉ đọc. Tôi đã kiểm tra các điều khoản trên tập tin (tôi có toàn quyền kiểm soát), và nếu tôi làm: w !, viết xảy ra tốt. Tuy nhiên, cho dù tôi mở tệp bằng: e hoặc từ NERDTree, tệp sẽ mở ra chỉ đọc. Tất cả các tệp khác tôi mở đều hoạt động tốt.Làm cách nào để mở tệp ở chế độ đọc/ghi trong Vim?

Tôi chỉ muốn biết cách tắt chế độ chỉ đọc trên tệp này, trước hoặc sau khi tôi mở tệp.

Tôi đang trên Windows, sử dụng gVim

EDIT: của nó có lẽ không phải là một vấn đề cho phép, vì: w! hoạt động tốt.

+1

Tôi không biết bạn đang chạy hệ điều hành Windows cụ thể nào, nhưng nếu bạn đang sử dụng Vista/Win7, bạn đã thử chạy gVim làm quản trị viên (nhấp chuột phải và chọn Chạy với tư cách quản trị viên), sau đó xem điều gì sẽ xảy ra khi bạn cố gắng lưu tệp? – Dave

+0

Loại tệp nào? Nó nằm ở đâu? Một số vị trí tệp trong thư mục người dùng sẽ mở ở chế độ chỉ đọc và w! thậm chí sẽ không hoạt động. – Jess

+0

@Dave: Tôi đang sử dụng XP và thật đáng buồn là tôi không thể chạy với tư cách quản trị viên vì tôi đang làm việc. –

Trả lời

-2

Chỉ cần buộc tệp được ghi vào bằng cách sử dụng: w !. Bạn nên vàng

+1

Ông ấy đã nói rằng ông ấy có thể làm điều đó tốt, nhưng ông ấy chỉ làm 't muốn phải làm điều đó. :) – Dave

0

Có lẽ đó là một khung cảnh vim trong tập tin để làm cho tải tập tin như chỉ đọc:

Kiểm tra cho một dòng như: (thay thế các char bình luận của tập tin của bạn thay vì //)

// vim: set ro:

Vim tìm các cài đặt này trong 5 dòng đầu tiên hoặc cuối cùng của tệp.

+0

không giống như có một dòng như thế này trong tập tin. không biết bạn có thể làm điều này với vim mặc dù. –

0

Bạn đã thử: Nhấp chuột phải -> Thuộc tính -> xem thuộc tính 'chỉ đọc' có được chọn không?

5

Chế độ gây phiền nhiễu cho bạn được kiểm soát bởi tùy chọn chỉ đọc. Để xóa nó, hãy nhập :set readonly! khi bạn đã khởi chạy trình chỉnh sửa.

2

Thực tế, nó có thể là sự cố về quyền.

Tôi vừa mới nhấn trường hợp này trên XP, với đặc quyền của Quản trị viên. Sau khi tạo một tệp có thể ghi được (thuộc tính chỉ đọc rõ ràng, Cygwin tương ứng cho thấy nó là có thể ghi), VIM vẫn hiển thị nó như là chỉ đọc.

Trong trường hợp của tôi, sự cố nằm trong quyền Nâng cao. Tìm kiếm trong Windows Explorer tại tệp, nhấp chuột phải để nhận Thuộc tính, trong tab Chung, bit chỉ đọc là rõ ràng. Bây giờ đi đến tab Security, nó cho thấy rằng tôi chỉ có quyền đọc. Nhấp vào nút Advanced, dưới tab Permissions, với tài khoản người dùng của tôi, nó cho thấy tôi có quyền đặc biệt không được thừa kế từ bất cứ đâu, thay vì "Full Control" được thừa hưởng từ thư mục chứa như tôi thấy cho các tệp khác của tôi.

Một khắc phục là nhấp vào Chỉnh sửa ... để chỉnh sửa quyền trong tab Quyền. Tuy nhiên, nó đơn giản hơn nhiều (ít nhất là trong trường hợp bạn có quyền quản trị) chỉ cần làm: w! trong VIM như những người khác đã gợi ý. Điều này sửa các quyền của tệp để có thể ghi ("Kiểm soát toàn bộ").

(Tôi không rõ ràng như thế nào tập tin đặc biệt này đã kết thúc trong "đặc biệt" read-only nhà nước. Rời khỏi đó như là ngoài phạm vi của câu hỏi của bạn.)

1

Sau đây thêm vào vimrc của bạn sẽ gây vim để thay đổi tệp thành chỉ đọc khi tệp được chỉnh sửa.Nó hoạt động bằng cách gọi các cửa sổ attrib cụ

"Change read/only files to read/write when they are edited 
au FileChangedRO * !start attrib -r % 
au FileChangedRO * :let s:changedRO = 1 
au FileChangedRO * :set noro 

"Don't ask about the modified read-only file 
au FileChangedShell * call s:HandleChangedROFile() 

function s:HandleChangedROFile() 
    if exists('s:changedRO') && s:changedRO == 1 
     let s:changedRO = 0 
     let v:fcs_choice='reload' 
    else 
     v:fcs_choice='ask' 
    endif 
endfunction 

Lấy cảm hứng từ: http://vim.wikia.com/wiki/Setting_file_attributes_without_reloading_a_buffer

0

Giải pháp là khá đơn giản, điều này chỉ xảy ra nếu bạn không có sự cho phép ghi như một người dùng.

đi đến nhà ga và nhập lệnh sau:

1] chmod u + wx filename filename là tên của tập tin mà bạn đang cố gắng để chỉnh sửa.

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