Y a-t-il un moyen de dire à emacs/vi/vim (depuis la ligne de commande) que je veux voir le fichier en mode de visualisation
ou en lecture seule
.
Je sais comment ouvrir un fichier en lecture seule si emacs/vi/vim est déjà en cours d'exécution.
Y a-t-il un moyen de dire à emacs/vi/vim (depuis la ligne de commande) que je veux voir le fichier en mode de visualisation
ou en lecture seule
.
Je sais comment ouvrir un fichier en lecture seule si emacs/vi/vim est déjà en cours d'exécution.
Et tous les utilisateurs de Vim prennent leur revanche en votant plus que la "réponse acceptée" :D
Pour Emacs :
emacs FICHIER --eval '(setq buffer-read-only t)'
Il n'y a pas d'option de démarrage pour forcer la lecture seule.
Éditer :
Si vous mettez cette petite fonction dans votre script de démarrage de shell (.bashrc par exemple), vous pouvez ouvrir un fichier en lecture seule en tapant ev fichier_a_voir
ev() {
emacs "$1" --eval '(setq buffer-read-only t)'
}
Pour ouvrir plus d'un fichier, le "-eval ..." doit être répété après chaque nom de fichier, sinon seul le dernier fichier de la liste est ouvert en lecture seule.
Astuce rapide et sale pour travailler avec plusieurs fichiers ouverts sur la ligne de commande : emacs --eval "(add-hook 'find-file-hook (defun make-read-only () (setq buffer-read-only t)))" fichier1 fichier2 ...
Afficher le nom du fichier
Essentiellement vim en mode lecture seule; simple!
Comme indiqué dans le commentaire, au cas où view
est lié à vi
standard, voici des commandes bash pour d'abord inspecter la situation et ensuite la corriger:
# inspection non destructive
which vim
which view
ls -l $(which view)
# écraser la vue actuelle avec un lien symbolique vers vim, nécessite les droits d'administration
ln -sfv $(which vim) $(which view)
@Nifle : Il ne devrait pas y avoir de différence dans la coloration syntaxique. Si votre vim
a une coloration syntaxique mais que votre view
ne l'a pas, peut-être que votre view
est un lien vers une version minimale de vim
qui n'a pas la coloration syntaxique compilée. Comparez les sorties de la commande :version
.
vim -R
permet d'écrire avec :w!
vim -c ":set nomodifiable"
Empêche l'utilisateur de faire des modifications sur le fichier en mémoire. Mais l'utilisateur pourrait rendre le fichier modifiable avec :set modifiable
Vous pourriez utiliser
vim -c ":noremap q :q" -c ":map : " -c ":set nomodifiable"
pour empêcher l'utilisateur de désactiver le "nomodifiable", et permettre à l'utilisateur de quitter en appuyant sur q
. Mais, alors l'utilisateur ne pourra pas entrer en mode commande du tout, ce qui peut être ce que vous voulez ou non.
Vous pourriez également ouvrir le fichier avec la commande less :
less
Pour visualiser le fichier dans un environnement similaire à vim mais sans la possibilité de modifier le fichier.
Petit suivi de la réponse acceptée : vous pouvez aliaser ceci dans votre shell pour le réduire à une seule commande. Par exemple en bash vous pouvez mettre ce qui suit dans votre .bashrc :
emacsro() {
emacs $1 --eval '(setq buffer-read-only t)'
}
(différents shells auront des formats différents pour le faire, mais vous avez l'idée)
J'aurais ajouté ceci comme commentaire en réponse à la réponse acceptée, mais il ne semblait pas possible d'avoir un bloc "code" sur plusieurs lignes dans un commentaire, et (en bash en tout cas) le code ci-dessus a vraiment besoin d'être sur 3 lignes séparées.
SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.
0 votes
Note : si vous n'avez pas les permissions en écriture sur le fichier, Vim l'ouvrira par défaut en mode lecture seule. En fait, je pense qu'il est plus facile de contrôler les permissions du fichier que de fournir un moyen "lecture seule".