Komut satırından salt okunur bir dosyayı emacs / vi / vim ile nasıl açarım


79

Emacs / vi / vim (komut satırından) dosyasını view-modeveya içinde görüntülemek istediğimi söylemenin bir yolu var mı read-only?

Bir dosyayı ancak emacs / vi / vim zaten çalışıyorsa okunacak şekilde nasıl açacağımı biliyorum.


Not: dosyaya yazma izniniz yoksa, Vim varsayılan olarak salt okunur modda açar. Aslında, dosya iznini kontrol etmenin "salt okunur" bir yol sağlamaktan daha kolay olduğunu düşünüyorum.
Franklin Yu

Yanıtlar:


45

Emacs için:

emacs FILE --eval '(setq buffer-read-only t)'

Sadece okumayı zorlamak için başlangıç ​​seçeneği yoktur.

Düzenleme:
Bu küçük işlevi kabuk başlangıç ​​komut dosyasına (örneğin .bashrc) koyarsanız, salt okunur yazarak bir dosyayı açabilirsiniz.ev file_to_view

ev() {
  emacs "$1" --eval '(setq buffer-read-only t)'
}

11
Keşke bunun için emacları oy kullanabilseydim.
Robert Calhoun,

145

vim -R dosya adı


4
Harika çalışıyor ama Trey'in cevabını kabul ettim çünkü vim yerine emacs tercih ediyorum
Nifle

32
Ve tüm vim kullanıcıları "kabul edilen cevaptan" daha fazlasına yükselterek intikam alırlar: D
Xosofox

1
Not: Bazı kutular 'view' komutuna sahip görünüyor, belki 'vi -R' takma adları.
armyofda12mnkeys

26

dosya adını görüntüle

Temel olarak salt okunur modda vim; simples!

Yorumun gösterdiği gibi, viewova ile bağlantılı olması durumunda , önce durumu incelemek ve sonra düzeltmek viiçin bash komutları verilmiştir:

# non-destructive inspection
which vim
which view
ls -l $(which view)

# overwrite current view with symlink to vim, requires root
ln -sfv $(which vim) $(which view)

1
Gerçi vurgulama sözdizimi yok.
Nifle

7
@Nifle: Sözdizimi vurgulamasında herhangi bir fark olmamalıdır. Eğer vimsözdiziminiz vurgulanıyorsa, ancak yazmazsanız view, belki de sizin derlenmiş bir sözdizimi vurgulanmamış olan viewminimal bir versiyonun bağlantısıdır vim. :versionKomutun çıktılarını karşılaştırın .
garyjohn

1
Neden "sadece işe yarıyor" nedeni: Vim argv[0], davranışını belirlemek için gerçekten okuyacak . Bu yaygın bir hiledir; AFAIK bazen GCC ve Bash de bunu yapar.
Franklin Yu

10
vim -R <file>

ile yazmaya izin verir :w!

vim -c ":set nomodifiable"  <file>

Kullanıcının arabellekteki dosyada herhangi bir değişiklik yapmasını önler. Ancak kullanıcı arabellek ile değiştirilebilir hale getirebilir:set modifiable

Kullanabilirsin

vim -c ":noremap q :q<cr>" -c ":map : <Esc>" -c ":set nomodifiable" <file>

Kullanıcının "gizlenemez" özelliğini kapatmasını önlemek ve kullanıcının tuşuna basarak çıkmasını sağlamak için q. Ancak, kullanıcı komut moduna hiç giremez, bu da istediğiniz gibi olabilir veya olmayabilir.

Dosyayı daha az komutla da açabilirsiniz:

less <file>

Dosyayı vim benzeri bir ortamda ancak dosyayı değiştirme yeteneği olmadan görüntülemek için.


Kullanmak için +1 less, @nxdrvr işaret ettiği gibi , dosyayı düzenlenebilir modda açmak için v tuşuna basabilirsinizvi
Sheharyar

9

Kabul edilen cevabın küçük takibi: Tek bir komuta indirgemek için bunu kabuğunuzda takma adlandırabilirsiniz. Örneğin, bash'te .bashrc dosyasına aşağıdakileri koyabilirsiniz:

emacsro() {
  emacs $1 --eval '(setq buffer-read-only t)'
}

(farklı mermiler bunu yapmak için farklı biçimlerde olacaktır, ancak siz anlıyorsunuz)

Bunu kabul edilen cevabın cevabına bir yorum olarak eklerdim, fakat bir yorumda çok satırlı bir "kod" bloğu olması mümkün değildi ve (yine de bash'ta) yukarıdaki kodun gerçekten olması gerekiyordu. 3 ayrı hat üzerinde.


6

Dosyayı düzenleme yeteneği olmadan görüntülemek için:

cat <file> | less

Gelen lessbasarak "düzenlemek dosya modu" gidebilirsiniz vanahtarı. Ancak standart girdiyi düzenleyemezsiniz, bu nedenle çıktısını cat <file>daha az boruya çekmek, less'v' tuşuna basıldığında 'düzenleme' moduna geçmeyi durdurur .

Vim için aynı yaklaşım

cat <file> | vim -

4
vÖneriniz için teşekkürler . Şık.
tshepang

2
+1, ancak gerek yok cat. Sadece kullan <FILENAME less.
Sparhawk

@Sparkhawk, <file> lessbir hata verecektir, demek istediğinizi farz ediyorum less <file>, ancak cevabında açıklandığı gibi, lessdoğrudan kullanırken , kullanıcı v tuşuna basıp düzenleme moduna geçebilir . Boru catiçin lessbunun olmasını durdurur.
Sheharyar

@Sheharyar Çıktı yönlendirmesi demek istedi. Belki less < FILENAME, V tuşuna bastığınızda “standart girişi düzenleyemezsiniz” ifadesini daha iyi tanıyorsunuzdur . Benzer şekilde Vim ile: vim - < FILENAME.
Franklin Yu

4

Emacs için görünüm modunu da kullanabilirsiniz .

emacsclient --create-frame --eval '(view-file "/tmp/EXAMPLE")'

veya bir terminal içindeki alternatif:

emacsclient --nw --eval '(view-file "/tmp/EXAMPLE")'

Veya sarmalayıcı komut dosyasını kullanabilirsin


1

Emacs içinde yapabilirsiniz

emacs FILE -f view-mode

Sözdizimi vurgulama uygulanır. Sadece dosyayı salt okunur bir arabellek olarak açmaz. I-search gibi bazı komutlara bu modda kontrol tuşu olmadan erişilebilir.


0

std'ye dosya göndermek, dosyanın boyutu göz önüne alındığında kabul edilebilir

cat <file>  # dump whole file to stdout
head <file> # view the first few lines
tail <file> # view the last n lines

0

Burada herhangi bir kullanıcının cevabını reddetmeyeceğim, ancak Read-only Modedosya hakkında biraz daha bilgi edinmek istiyorum . Sadece belgelere göre Salt Okunur Modu Bir dosyaya bakmak istediğinizde ancak bu dosyayı istemeden yapılan tuş vuruşlarından ve değişikliklerden korumak istediğiniz zamanlar olacaktır. (Vi hareketlerini uygulamak için uzun bir dosyayı aramak isteyebilirsiniz veya bir komut dosyası veya programda gezinmek isteyebilirsiniz). Bir dosyayı salt okunur modda girebilir ve tüm vi hareket komutlarını kullanabilirsiniz, ancak dosyayı değiştiremezsiniz.

Bir dosyaya salt okunur modda bakmak için aşağıdakilerden birini girin:

$ vi -R file

veya:

$ view file

(Vi komutu gibi, view komutu, dosyada belirli bir yere ilerlemek için komut satırı seçeneklerinden herhangi birini kullanabilir.) Dosyada bazı düzenlemeler yapmaya karar verirseniz, salt okunur modu geçersiz kılabilirsiniz. write komutuna ünlem işareti eklemek için:

:w!
or:

:wq!

Dosyayı yazmada sorun yaşıyorsanız.

Burada daha fazla ref için

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.