Tôi đã mở một tập tin ở chế độ chỉ đọc; Có cách nào để thoát khỏi chế độ chỉ đọc không?
w
mỗi lần tôi muốn lưu. heh
Tôi đã mở một tập tin ở chế độ chỉ đọc; Có cách nào để thoát khỏi chế độ chỉ đọc không?
w
mỗi lần tôi muốn lưu. heh
Câu trả lời:
Bạn có thể làm điều này:
:set noro
Điều đó bỏ đặt cờ chỉ đọc, nhưng nếu tệp bên dưới vẫn không thể ghi được bởi bạn thì vim vẫn sẽ không thể ghi vào nó.
:set ro
.
view
nhưng sau đó quyết định chỉnh sửa nó.
Bạn có thể chạy chmod
từ trong vim:
:!chmod +w %
!
có nghĩa là chạy lệnh shell và %
là tên tệp hiện tại. Bạn cũng có thể buộc tập tin ghi:
:w!
Ngoài câu trả lời của Michael Mrozek , bạn có thể thêm một dòng .vimrc
cho phép bạn ghi vào một tệp mà bạn đã bỏ qua để mở với quyền nâng cao:
" Allows writing to files with root priviledges
cmap w!! w !sudo tee % > /dev/null
Nếu tệp chỉ được đọc, bạn chỉ phải nhập :w!!, bạn sẽ được nhắc nhập mật khẩu và sau đó tệp sẽ được ghi thành công.
Trong khi :set noro
thực hiện công việc, nó không kiểm tra xem tệp có được mở bởi một phiên bản vim khác hay cập nhật tệp nếu thay đổi bên ngoài.
Để làm cho nó có thể chỉnh sửa và kiểm tra các tệp hoán đổi (là mặc định mở tệp bằng vim), chỉ cần sử dụng lệnh chỉnh sửa (: trợ giúp chỉnh sửa):
:e
Lưu ý, nếu tệp đã bị thao túng kể từ đó (thậm chí bên ngoài vim), nó sẽ cập nhật các thay đổi trong bộ đệm hiện tại (mà tôi thấy bình thường mong muốn).
Tôi đi đây, mặc dù hơi muộn, nhưng có lẽ bạn đã giải quyết được nghi ngờ của mình;) Tôi chưa thấy trong bất kỳ bình luận nào theo cách tôi biết với vim , vì vậy, tôi thêm nó:
Khi bạn đang chỉnh sửa một tệp, bạn nhấn :w
hoặc :wq
, và bạn thấy thông báo gây phiền nhiễu " E45 'chỉ đọc' được đặt (thêm! Để ghi đè) "
Bạn có thể gõ
:w !sudo tee %
w
viết bộ đệm, !sudo
gọi shell bằng sudo, tee
chuyển hướng đầu ra của vim :w
đầu ra bằng tee và%
là tên tệp hiện tạiVà điều đó nên làm các mẹo. Lưu ý rằng điều này sẽ nhắc tải lại tệp trong vim, cho những gì bạn phải nhấn L
!
đếnw
lệnh sẽ làm các trick, như Michael nói.