Làm cách nào tôi có thể thoát khỏi chế độ chỉ đọc trong Vim?


38

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?


Những hạn chế trong chế độ chỉ đọc đang làm phiền bạn là gì? Nếu nó chỉ mà bạn muốn viết các tập tin, ngay cả khi bạn opend nó chỉ đọc, sau đó thêm một !đến wlệnh sẽ làm các trick, như Michael nói.
Bananguin

1
@ user1129682 chỉ là sự bất tiện khi nhớ đặt dấu chấm than sau wmỗi lần tôi muốn lưu. heh
tên người dùng sai

Câu trả lời:


43

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ó.


Làm thế nào để đảo ngược điều này và quay trở lại chỉ đọc?
Louis Hồng

2
@LouisHong Rất dễ dàng : :set ro.
Philip Kearns

1
Điều này là hoàn hảo nếu bạn mở một tệp có thể ghi viewnhưng sau đó quyết định chỉnh sửa nó.
wvducky

9

Bạn có thể chạy chmodtừ 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!

3

Ngoài câu trả lời của Michael Mrozek , bạn có thể thêm một dòng .vimrccho 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.


2

Trong khi :set norothự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).


1

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 :whoặ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 đè) "

Tùy chọn chỉ đọc E45 được đặt (thêm! Để ghi đè)

Bạn có thể gõ

:w !sudo tee %

w! sudo tee%

  • w viết bộ đệm,
  • !sudo gọi shell bằng sudo,
  • teechuyển hướng đầu ra của vim :wđầu ra bằng tee và
  • % là tên tệp hiện tại

Và đ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

nhập mô tả hình ảnh ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.