web-dev-qa-db-fra.com

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

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.

78
Nifle

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)'
}
45
Trey Jackson

vim -R nom de fichier

145
RedGrittyBrick

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)
26
mrverrall
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.

10
Jay

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.

8
Chirael

Pour visualiser un fichier sans possibilité d’édition:

cat <file> | less

Dans lessvous 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 lessde passer en mode 'édition' en appuyant sur 'v'.

Pour vim la même approche

cat <file> | vim -
6
nxdrvr

Pour emacs, vous pouvez également utiliser le mode de visualisation .

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 wrapper

4
user86064

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.

1
jogama

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
0
Nathan Feger

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

0
Md Haidar Ali Khan