¿Hay alguna manera de decirle a emacs / vi / vim (desde la línea de comandos) que quiero ver el archivo en view-mode
o read-only
.
Sé cómo abrir un archivo como de lectura solo si emacs / vi / vim ya se está ejecutando.
¿Hay alguna manera de decirle a emacs / vi / vim (desde la línea de comandos) que quiero ver el archivo en view-mode
o read-only
.
Sé cómo abrir un archivo como de lectura solo si emacs / vi / vim ya se está ejecutando.
Respuestas:
Para emacs:
emacs FILE --eval '(setq buffer-read-only t)'
No hay opción de inicio para forzar solo lectura.
Editar:
si coloca esta pequeña función en su script de inicio de shell (.bashrc, por ejemplo), puede abrir un archivo de solo lectura escribiendoev file_to_view
ev() {
emacs "$1" --eval '(setq buffer-read-only t)'
}
vim -R nombrearchivo
ver nombre de archivo
Básicamente vim en modo de solo lectura; simples!
Como lo indica el comentario, en caso de que view
esté vinculado a simple vi
, aquí hay comandos bash para inspeccionar primero la situación y luego solucionarla:
# 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
tiene resaltado de sintaxis pero view
no lo tiene, quizás su view
es un enlace a una versión mínima vim
que no tiene resaltado de sintaxis compilado. Compare las salidas del :version
comando.
argv[0]
para decidir su comportamiento. Es un truco común; AFAIK a veces GCC y Bash también hacen esto.
vim -R <file>
permite escribir con :w!
vim -c ":set nomodifiable" <file>
Impide que el usuario realice cambios en el archivo en el búfer. Pero el usuario podría modificar el búfer con:set modifiable
Podrías usar
vim -c ":noremap q :q<cr>" -c ":map : <Esc>" -c ":set nomodifiable" <file>
para evitar que el usuario desactive la opción "nomodificable" y permitir que el usuario salga presionando q
. Pero, entonces, el usuario no puede ingresar al modo de comando, lo que puede o no ser lo que desea.
También puede abrir el archivo con el comando less:
less <file>
Para ver el archivo en un entorno similar a vim pero sin la capacidad de cambiar el archivo.
less
, aunque como señala @nxdrvr puede pulsar el v llave para abrir el archivo en modo editiable envi
Pequeño seguimiento de la respuesta aceptada: puede alias esto en su shell para reducirlo a un solo comando. Por ejemplo, en bash puedes poner lo siguiente en tu .bashrc:
emacsro() {
emacs $1 --eval '(setq buffer-read-only t)'
}
(diferentes shells tendrán diferentes formatos para hacer esto, pero entiendes la idea)
Hubiera agregado esto como un comentario en respuesta a la respuesta aceptada, pero no parecía posible tener un bloque de "código" de varias líneas en un comentario, y (en bash de todos modos) el código anterior realmente necesita ser en 3 líneas separadas.
Para ver el archivo sin posibilidad de editarlo:
cat <file> | less
En less
puede ir al "modo de edición de archivos" presionando la vtecla. Pero no puede editar la entrada estándar, por lo que canalizar la salida cat <file>
a menos, deja less
de ir al modo 'editar' al presionar 'v'.
Para vim el mismo enfoque
cat <file> | vim -
v
sugerencia Hábil.
cat
. Solo úsalo <FILENAME less
.
<file> less
daría un error, supongo que lo dices en serio less <file>
, pero como se explica en la respuesta, cuando se usa less
directamente, el usuario podría presionar la tecla v y entrar en modo de edición. La tubería cat
a less
evita que esto suceda.
less < FILENAME
, que le da "No se puede editar la entrada estándar" cuando se presiona V . Lo mismo ocurre con Vim: vim - < FILENAME
.
Para emacs también puede usar el modo de vista .
emacsclient --create-frame --eval '(view-file "/tmp/EXAMPLE")'
o alternativa dentro de una terminal:
emacsclient --nw --eval '(view-file "/tmp/EXAMPLE")'
O puedes usar mi script de envoltura
enviar un archivo a std, puede ser aceptable dado el tamaño del archivo
cat <file> # dump whole file to stdout
head <file> # view the first few lines
tail <file> # view the last n lines
No voy a descartar la respuesta de ningún usuario aquí, pero me gustaría agregar más información sobre el Read-only Mode
archivo. Según la documentación de oreilly Modo de solo lectura Habrá ocasiones en que desee mirar un archivo pero desee protegerlo de las pulsaciones y cambios inadvertidos. (Es posible que desee llamar a un archivo largo para practicar movimientos vi, o puede que desee desplazarse a través de un archivo de comando o programa). Puede ingresar un archivo en modo de solo lectura y usar todos los comandos de movimiento vi, pero no podrá cambiar el archivo.
Para ver un archivo en modo de solo lectura, ingrese:
$ vi -R file
o:
$ view file
(El comando de vista, como el comando vi, puede usar cualquiera de las opciones de la línea de comandos para avanzar a un lugar específico en el archivo). Si decide realizar algunas modificaciones en el archivo, puede anular el modo de solo lectura al agregando un signo de exclamación al comando de escritura:
:w!
or:
:wq!
Si tiene problemas para escribir el archivo.
Para más información aquí