Question Comment puis-je ouvrir un fichier en lecture seule à partir de la ligne de commande avec emacs / vi / vim


Est-il possible de dire à emacs / vi / vim (à partir de la ligne de commande) que je veux afficher le fichier dans 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.


76
2017-10-28 09:46


origine


Remarque: si vous ne disposez pas de l'autorisation d'é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 la permission de fichier que de fournir un mode "lecture seule". - Franklin Yu


Réponses:


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 le script de démarrage de votre 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)'
}

43
2017-10-28 13:50



Je souhaite que je puisse vaincre emacs pour cela. - Robert Calhoun


vim -R nomfichier


143
2017-10-28 09:51



Fonctionne bien mais j'ai accepté la réponse de Trey parce que je préfère emacs à vim - Nifle
Et tous les utilisateurs de vim se vengent en leur accordant plus que la «réponse acceptée»: D - Xosofox
Note: certaines cases semblent avoir la commande 'view' peut-être des alias à 'vi -R'. - armyofda12mnkeys


voir le nom du fichier

Fondamentalement vim en mode lecture seule; simples!

Comme suggéré par commentaire, au cas où view est lié à la plaine vi, Voici frapper commandes pour inspecter d'abord la situation et ensuite le réparer:

# 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)

26
2017-10-28 10:43



Aucune coloration syntaxique cependant. - Nifle
@Nifle: Il ne devrait y avoir aucune différence dans la coloration syntaxique. Si ton vim a la coloration syntaxique, mais votre view n'est-ce pas, peut-être votre view est un lien vers une version minimale de vim qui ne comporte pas de mise en évidence de la syntaxe. Comparez les résultats du :version commander. - garyjohn
Raison pour laquelle il "fonctionne": Vim va lire argv[0] décider de son comportement. C'est un truc commun; AFAIK parfois GCC et Bash le font aussi. - Franklin Yu


vim -R <file>

permet d'écrire avec :w!

vim -c ":set nomodifiable"  <file>

Empêche l'utilisateur d'apporter des modifications au fichier dans le 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 permettre à l'utilisateur de quitter en appuyant sur q. Cependant, l'utilisateur ne peut pas accéder au mode de commande, ce qui peut être ou ne pas être ce que vous voulez.

Vous pouvez également ouvrir le fichier avec la commande la moins importante:

less <file>

Pour afficher le fichier dans un environnement de type vim mais sans pouvoir modifier le fichier.


10
2017-10-28 18:10



+1 pour utiliser less, bien que @nxdrvr indique que vous pouvez appuyer sur v clé pour ouvrir le fichier en mode éditable dans vi - Sheharyar


Petit suivi de la réponse acceptée: vous pouvez créer un alias dans votre shell pour le réduire à une seule commande. Par exemple, dans bash, vous pouvez mettre ce qui suit dans votre fichier .bashrc:

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

(différents shells auront des formats différents pour ce faire, mais vous avez 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" multi-lignes dans un commentaire, et (de toute façon en bash) le code ci-dessus doit vraiment être sur 3 lignes distinctes.


8
2017-10-31 23:50





Pour afficher le fichier sans possibilité de modifier:

cat <file> | less

Dans less vous pouvez aller dans "modifier le mode fichier" en appuyant sur v clé. Mais vous ne pouvez pas éditer d’entrée standard, donc la sortie de cat <file> à moins, arrête less d'aller en mode 'edit' en appuyant sur 'v'.

Pour vim la même approche

cat <file> | vim -

5
2018-03-21 08:32



Merci pour le v suggestion. Nifty. - Tshepang
+1, mais pas besoin de cat. Juste utiliser <FILENAME less. - Sparhawk
@ Parkpark, <file> less donnerait une erreur, je suppose que vous vouliez dire less <file>, mais comme expliqué dans la réponse, lors de l'utilisation less directement, l'utilisateur peut appuyer sur v touche et passe en mode édition. Tuyauterie cat à less arrête cela. - Sheharyar
@ Sheharyar Il voulait dire redirection de sortie. Peut-être que vous êtes plus familier avec less < FILENAME, qui vous permet de ne pas modifier l’entrée standard lorsque vous appuyez sur V. De même avec Vim: vim - < FILENAME. - Franklin Yu


Pour emacs, vous pouvez également utiliser le mode d'affichage.

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

ou alternative à l'intérieur d'un terminal:

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

Ou vous pouvez utiliser mon script d'encapsulation 


4
2017-09-12 15:01





Dans emacs tu peux 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 commande dans ce mode.


1
2018-02-10 18:37





envoyer un fichier à 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

0
2017-10-28 18:45





Je ne vais pas faire de la discradition à qui que ce soit, mais je voudrais en savoir plus sur Read-only Mode fichier. Selon la documentation de Oreilly Mode lecture seule Il y aura des moments où vous voulez regarder un fichier mais que vous voulez protéger ce fichier contre les frappes et les modifications par inadvertance. (Vous souhaiterez peut-être appeler un fichier volumineux pour effectuer des mouvements vi, ou vous pouvez faire défiler un fichier ou un programme de commande). Vous pouvez entrer un fichier en mode lecture seule et utiliser toutes les commandes de mouvement 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 l'une des options de ligne de commande pour accéder à un emplacement spécifique du fichier.) Si vous décidez de modifier le fichier, vous pouvez remplacer le mode lecture seule par: ajouter un point d'exclamation à la commande d'écriture:

:w!
or:

:wq!

Si vous avez des problèmes pour écrire le fichier.

Pour plus de réf ici


0
2018-03-15 12:54