Salt okunur dosyadaki değişiklikleri engelleme


14

Salt okunur bir dosyayı düzenlemek için Vim'i kullanırken, ilk düzenlendiğinde bir uyarı verir, ancak değişikliklerin yapılmasına izin verir. Bu davranışı başka bir adla dosyayı kaydetmek isteyen biri için yararlı olabilir anlayabilirim; ancak bazen yazma erişimine sahip olmadığım dosyaları açıyorum, sonra unutuyorum ve değişiklikler yapıyorum.

Vim'in dosyanın görüntülenmesine izin vereceği, ancak değişiklik yapan herhangi bir seçeneği engelleyeceği bir moda girmek mümkün müdür?

Yanıtlar:


13

Bir çözüm buldum. Ayar nomodifiable, dosyanın düzenlenmesini önler (yardım pencerelerinde kullanıldığı gibi). Ayarlanıp ayarlanmadığına modifiablebağlı olarak basit bir işlev oluşturdum ya da readonlyayarını kaldırdım ve bir autocmd'ye bağladım.

" Don't allow editing of read only files
autocmd BufRead * call RONoEdit()

function! RONoEdit()
  if &readonly == 1
    set nomodifiable
  else
    set modifiable
  endif
endfunction

4
Yaparak let &modifiable = !&readonly
kısaltabilirsiniz

@Carpetsmoker Bir astar olarak çok daha iyi, teşekkürler! Ancak yine de olması gerekir: autocmd BufRead * let &modifiable = !&readonly
ZeroKelvinKeyboard

Bununla, bir readonlydosyayı açıp yeni bir arabellek oluşturduktan sonra yeni arabellek sona erer nomodifiable.
Praxeolitic

Bunu belirttiğiniz için teşekkürler, fark etmemiştim. Yeni bir tamponun nasıl test edileceğinden emin değilim.
ZeroKelvinKeyboard

1
@Praxeolitic: Bunu ele alması gereken bir cevap gönderdim , işe yarayıp yaramadığını bana bildirin.
s4y

7

Bunu .vimrc'nize ekleyin:

autocmd BufRead * let &l:modifiable = !&readonly

Bu, @ ZeroKelvinKeyboard'un yalnızca geçerli arabelleği etkileme yanıtı üzerine kuruludur.
16:58

0

Yukarıdaki yanıtlar doğru olduğu sürece, dikkate alınması gereken başka bir şey daha vardır: dosya "salt okunur" olduğu sürece, dosyanın sahibi değilseniz veya dosyanın sahibi olmadıkça dosyanın içeriğini değiştirmenin hiçbir yolu olmamalıdır. bu dosyayı yazılabilir yapma hakkına sahiptir. Ve o zaman bile ": w!" İle "salt okunur" durumunu açıkça geçersiz kılmadığınız sürece vim dosyaya değişiklik yazmaz.

Aslında salt okunur olması gereken bir dosyayı düzenleyebiliyorsanız, hakları yeniden kontrol etmek isteyebilirsiniz, güvenlik yanlış yapılandırması olabilir. Vim dosyasını yalnızca dosyayı düzenleyemez hale getirirseniz, dosya değiştirilmeyecekse, hakların düzgün ayarlanmış olması gerekir. Windows'da, değişikliği herkese açık bir şekilde reddederek dosyayı salt okunur olmaya zorlayabilirsiniz, Linux'ta "değişmez" genişletilmiş özniteliği (chattr + i) kullanabilirsiniz.


2
Çok net olmasaydım üzgünüm. Bu soru yanlışlıkla salt okunur bir dosyayı değiştirmekle ilgili değildi; Yazma erişimim olmayan bir dosyanın ara belleğini düzenleyebilmek için kendimi durdurmak istedim. Bazen yanlışlıkla sistem yapılandırma dosyalarını kök kullanıcı yerine normal kullanıcı olarak açarım. Bu durumda, dosyaya yazma erişimim yok, bu nedenle arabellek salt okunur olarak görünüyor, ancak Vim yine de arabelleği düzenlememe izin veriyor. Kaydetmeye çalıştığımda yazamıyorum çünkü yapamıyorum. Bu durumda Vim'in arabellekteki değişiklikleri engellemesini istedim.
ZeroKelvinKeyboard

Ah, anlıyorum. Bunu başarısız bir güvenlik olarak istediğin fikrini aldım. Cevabımı dikkate almayın :)
mikky

OP, işletim sisteminde salt okunur olmayan bir dosyayı açtığında, ancak şu anda değişiklik yapmak istemediğini (veya uygun bulmayı düşündüğünü) ve kendisini yapmamasını kısıtlamak istediğini ifade eder. Ben de aynısını düşünüyorum, böylece Google'dan buraya gidiyorum!
Violapterin
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.