Apakah ada cara untuk memberi tahu emacs / vi / vim (dari baris perintah) bahwa saya ingin melihat file di view-mode
atau read-only
.
Saya tahu cara membuka file sebagai hanya baca jika emacs / vi / vim sudah berjalan.
Apakah ada cara untuk memberi tahu emacs / vi / vim (dari baris perintah) bahwa saya ingin melihat file di view-mode
atau read-only
.
Saya tahu cara membuka file sebagai hanya baca jika emacs / vi / vim sudah berjalan.
Jawaban:
Untuk emacs:
emacs FILE --eval '(setq buffer-read-only t)'
Tidak ada opsi startup untuk memaksa membaca saja.
Sunting:
Jika Anda meletakkan fungsi kecil ini di skrip startup shell Anda (.bashrc misalnya), Anda dapat membuka file hanya-baca dengan mengetikev file_to_view
ev() {
emacs "$1" --eval '(setq buffer-read-only t)'
}
vim -R nama file
lihat nama file
Pada dasarnya vim dalam mode read-only; simples!
Seperti yang diisyaratkan oleh komentar, jika view
dikaitkan dengan plain vi
, berikut adalah perintah bash untuk memeriksa situasi terlebih dahulu dan kemudian memperbaikinya:
# 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)
vim
memiliki penyorotan sintaks tetapi Anda view
tidak, mungkin Anda view
adalah tautan ke versi minimal vim
yang tidak dikompilasi dengan penyorotan sintaks. Bandingkan hasil dari :version
perintah.
argv[0]
untuk memutuskan perilakunya. Ini adalah trik umum; AFAIK terkadang GCC dan Bash melakukan ini juga.
vim -R <file>
memungkinkan menulis dengan :w!
vim -c ":set nomodifiable" <file>
Mencegah pengguna membuat perubahan apa pun pada file di buffer. Tetapi pengguna dapat membuat buffer dapat dimodifikasi dengan:set modifiable
Anda bisa menggunakannya
vim -c ":noremap q :q<cr>" -c ":map : <Esc>" -c ":set nomodifiable" <file>
untuk mencegah pengguna mematikan "nomodifiable", dan memungkinkan pengguna untuk berhenti dengan menekan q
. Tapi, maka pengguna tidak bisa masuk ke mode perintah sama sekali, yang mungkin atau mungkin tidak sesuai keinginan Anda.
Anda juga bisa membuka file dengan perintah less:
less <file>
Untuk melihat file dalam lingkungan seperti vim tetapi tanpa kemampuan untuk mengubah file.
less
, meskipun sebagaimana @nxdrvr tunjukkan, Anda dapat menekan tombol v untuk membuka file dalam mode yang dapat diedit divi
Tindak lanjut kecil untuk jawaban yang diterima: Anda bisa alias ini di shell Anda untuk menguranginya menjadi satu perintah. Misalnya di bash Anda bisa meletakkan yang berikut di .bashrc Anda:
emacsro() {
emacs $1 --eval '(setq buffer-read-only t)'
}
(shell yang berbeda akan memiliki format yang berbeda untuk melakukan ini, tetapi Anda mendapatkan ide)
Saya akan menambahkan ini sebagai komentar sebagai jawaban atas jawaban yang diterima, tetapi sepertinya tidak mungkin untuk memiliki blok "kode" multi-baris dalam komentar, dan (dalam bash pula) kode di atas benar-benar perlu pada 3 baris terpisah.
Untuk hanya melihat file tanpa kemampuan untuk mengedit:
cat <file> | less
Di less
Anda dapat pergi ke "edit file mode" dengan menekan vtombol. Tetapi Anda tidak dapat mengedit input standar, jadi perpipaan output cat <file>
menjadi kurang, berhenti less
dari pergi ke mode 'edit' dengan menekan 'v'.
Untuk vim, pendekatan yang sama
cat <file> | vim -
v
sarannya. Bagus.
cat
. Gunakan saja <FILENAME less
.
<file> less
akan memberikan kesalahan, saya anggap Anda maksud less <file>
, tetapi seperti yang dijelaskan dalam jawaban, ketika menggunakan less
secara langsung, pengguna dapat menekan tombol v dan masuk ke mode edit. Perpipaan cat
untuk less
menghentikan hal ini terjadi.
less < FILENAME
, yang memberikan Anda "Tidak dapat mengedit input standar" saat Anda menekan V . Demikian pula dengan Vim: vim - < FILENAME
.
Untuk emacs Anda juga dapat menggunakan mode tampilan .
emacsclient --create-frame --eval '(view-file "/tmp/EXAMPLE")'
atau alternatif di dalam terminal:
emacsclient --nw --eval '(view-file "/tmp/EXAMPLE")'
Atau Anda dapat menggunakan skrip pembungkus saya
mengirim file ke std out, mungkin dapat diterima mengingat ukuran file
cat <file> # dump whole file to stdout
head <file> # view the first few lines
tail <file> # view the last n lines
Saya tidak akan berdiskusi dengan siapa pun yang dijawab oleh pengguna di sini, tetapi saya ingin menambahkan beberapa info tentang Read-only Mode
file. Sesuai dokumentasi murni Mode Hanya Baca. Akan ada saatnya Anda ingin melihat file tetapi ingin melindungi file itu dari penekanan tombol dan perubahan yang tidak disengaja. (Anda mungkin ingin memanggil file yang panjang untuk mempraktikkan gerakan vi, atau Anda mungkin ingin menelusuri file perintah atau program). Anda dapat memasukkan file dalam mode read-only dan menggunakan semua perintah gerakan vi, tetapi Anda tidak akan dapat mengubah file.
Untuk melihat file dalam mode hanya baca, masukkan:
$ vi -R file
atau:
$ view file
(Perintah tampilan, seperti perintah vi, dapat menggunakan opsi baris perintah untuk memajukan ke tempat tertentu dalam file.) Jika Anda memutuskan untuk mengedit file, Anda dapat mengganti mode hanya baca dengan menambahkan tanda seru ke perintah tulis:
:w!
or:
:wq!
Jika Anda memiliki masalah dalam menulis file.
Untuk referensi lebih lanjut di sini