Existe-t-il un moyen de dire à emacs/vi/vim (à partir de la ligne de commande) que je souhaite afficher le fichier au format view-mode
ou read-only
.
Je sais comment ouvrir un fichier en lecture seule si emacs/vi/vim est déjà en cours d'exécution.
Pour Emacs:
emacs FILE --eval '(setq buffer-read-only t)'
Il n'y a pas d'option de démarrage pour forcer la lecture seule.
Modifier:
Si vous mettez cette petite fonction dans votre script de démarrage Shell (.bashrc par exemple), vous pouvez ouvrir un fichier en lecture seule en tapant ev file_to_view
ev() {
emacs "$1" --eval '(setq buffer-read-only t)'
}
vim -R nom de fichier
voir le nom du fichier
Fondamentalement vim en mode lecture seule; simples!
Comme suggéré par le commentaire, dans le cas où view
est lié à plain vi
, voici les commandes bash pour inspecter d'abord la situation, puis la corriger:
# 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 -R <file>
permet d'écrire avec :w!
vim -c ":set nomodifiable" <file>
Empêche l'utilisateur d'apporter des modifications au fichier dans la mémoire tampon. Mais l'utilisateur pourrait rendre le tampon modifiable avec :set modifiable
Vous pourriez utiliser
vim -c ":noremap q :q<cr>" -c ":map : <Esc>" -c ":set nomodifiable" <file>
pour empêcher l'utilisateur de désactiver le "nomodifiable", et lui permettre de quitter en appuyant sur q
. Mais, alors l'utilisateur ne peut pas entrer du tout en mode commande, ce qui peut être ou ne pas être ce que vous voulez.
Vous pouvez également ouvrir le fichier avec la commande less:
less <file>
Pour afficher le fichier dans un environnement semblable à vim mais sans possibilité de le modifier.
Petit suivi de la réponse acceptée: vous pouvez utiliser ce pseudonyme dans votre shell pour le réduire à une seule commande. Par exemple, dans bash, vous pouvez mettre ce qui suit dans votre .bashrc:
emacsro() {
emacs $1 --eval '(setq buffer-read-only t)'
}
(différents coquillages auront différents formats pour le faire, mais vous voyez l'idée)
J'aurais ajouté ceci en tant que commentaire en réponse à la réponse acceptée, mais il ne semblait pas possible d'avoir un bloc "code" multiligne dans un commentaire, et (en bash de toute façon) le code ci-dessus doit vraiment être sur 3 lignes séparées.
Pour visualiser un fichier sans possibilité d’édition:
cat <file> | less
Dans less
vous pouvez aller en "mode fichier" en appuyant sur le bouton v clé. Mais vous ne pouvez pas modifier l'entrée standard. Par conséquent, si vous redistribuez la valeur de cat <file>
à moins, arrêtez less
de passer en mode 'édition' en appuyant sur 'v'.
Pour vim la même approche
cat <file> | vim -
Dans Emacs, vous pouvez faire
emacs FILE -f view-mode
La mise en évidence de la syntaxe est appliquée. Il ne suffit pas d'ouvrir le fichier en tant que tampon en lecture seule. Certaines commandes, telles que I-search, sont accessibles sans la touche de navigation dans ce mode.
l'envoi d'un fichier sur std out, peut être acceptable compte tenu de la taille du fichier
cat <file> # dump whole file to stdout
head <file> # view the first few lines
tail <file> # view the last n lines
Je ne vais pas discuter à n'importe quel utilisateur répondre ici, mais je voudrais ajouter quelques informations supplémentaires sur le fichier Read-only Mode
. Comme indiqué dans la documentation originale Mode lecture seule Il peut arriver que vous souhaitiez consulter un fichier tout en le protégeant des frappes de touche et des modifications accidentelles. (Vous souhaiterez peut-être appeler un fichier volumineux pour s'exercer à effectuer des mouvements de vi, ou faire défiler un fichier de commande ou un programme). Vous pouvez entrer un fichier en mode lecture seule et utiliser toutes les commandes de mouvement de vi, mais vous ne pourrez pas modifier le fichier.
Pour regarder un fichier en mode lecture seule, entrez soit:
$ vi -R file
ou:
$ view file
(La commande view, comme la commande vi, peut utiliser n’importe quelle option de ligne de commande pour accéder à un emplacement spécifique du fichier.) Si vous décidez d’apporter des modifications au fichier, vous pouvez remplacer le mode lecture seule par ajout d'un point d'exclamation à la commande write:
:w!
or:
:wq!
Si vous avez un problème pour écrire le fichier.
Pour plus de ref ici