it-swarm.com.de

Wie kann ich eine schreibgeschützte Datei über die Befehlszeile mit emacs / vi / vim öffnen?

Gibt es eine Möglichkeit, emacs/vi/vim (über die Befehlszeile) mitzuteilen, dass ich die Datei in view-mode oder read-only anzeigen möchte?.

Ich kann eine Datei als schreibgeschützt öffnen, wenn emacs/vi/vim bereits ausgeführt wird.

78
Nifle

Für Emacs:

emacs FILE --eval '(setq buffer-read-only t)'

Es gibt keine Startoption, die schreibgeschützt ist.

Bearbeiten:
Wenn Sie diese kleine Funktion in Ihr Shell-Startskript einfügen (z. B. .bashrc), können Sie eine schreibgeschützte Datei öffnen, indem Sie ev file_to_view eingeben.

ev() {
  emacs "$1" --eval '(setq buffer-read-only t)'
}
45
Trey Jackson

vim -R Dateiname

145
RedGrittyBrick

dateiname anzeigen

Grundsätzlich vim im Nur-Lese-Modus; simples!

Wie aus dem Kommentar hervorgeht, gibt es für den Fall, dass view mit einer einfachen vi verknüpft ist, die folgenden bash Befehle, um die Situation zuerst zu untersuchen und dann zu beheben:

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

ermöglicht das Schreiben mit :w!

vim -c ":set nomodifiable"  <file>

Verhindert, dass der Benutzer Änderungen an der Datei im Puffer vornimmt. Der Benutzer kann den Puffer jedoch mit :set modifiable änderbar machen.

Du könntest benutzen

vim -c ":noremap q :q<cr>" -c ":map : <Esc>" -c ":set nomodifiable" <file>

um den Benutzer daran zu hindern, das "nomodifizierbare" auszuschalten, und um dem Benutzer das Beenden durch Drücken von q zu ermöglichen. In diesem Fall kann der Benutzer jedoch überhaupt nicht in den Befehlsmodus wechseln. Dies ist möglicherweise das, was Sie möchten, oder auch nicht.

Sie können die Datei auch mit dem Befehl less öffnen:

less <file>

Anzeigen der Datei in einer vim-ähnlichen Umgebung, jedoch ohne die Möglichkeit, die Datei zu ändern.

10
Jay

Kleine Antwort auf die akzeptierte Antwort: Sie können dies in Ihrer Shell aliasen, um es auf einen einzelnen Befehl zu reduzieren. In bash können Sie beispielsweise Folgendes in Ihre .bashrc einfügen:

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

(Verschiedene Shells haben unterschiedliche Formate, aber Sie haben die Idee)

Ich hätte dies als Kommentar zu der akzeptierten Antwort hinzugefügt, aber es schien nicht möglich zu sein, einen mehrzeiligen "Code" -Block in einem Kommentar zu haben, und (auf jeden Fall in Bash) muss der obige Code wirklich sein in 3 separaten Zeilen.

8
Chirael

So zeigen Sie eine Datei an, ohne sie bearbeiten zu können:

cat <file> | less

In less können Sie zum "Dateimodus bearbeiten" wechseln, indem Sie die Taste drücken v Schlüssel. Sie können die Standardeingabe jedoch nicht bearbeiten. Wenn Sie also die Ausgabe von cat <file> auf less leiten, wird less beim Drücken von 'v' nicht in den Bearbeitungsmodus versetzt.

Für vim der gleiche Ansatz

cat <file> | vim -
6
nxdrvr

Für Emacs können Sie auch den Ansichtsmodus verwenden.

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

oder alternativ innerhalb eines Terminals:

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

Oder Sie können mein Wrapper-Skript verwenden

4
user86064

In Emacs können Sie tun

emacs FILE -f view-mode

Syntaxhervorhebung wird angewendet. Die Datei wird nicht nur als schreibgeschützter Puffer geöffnet. Einige Befehle, z. B. I-Search, sind in diesem Modus ohne die Steuertaste verfügbar.

1
jogama

das Senden einer Datei an std out kann angesichts der Dateigröße akzeptabel sein

cat <file>  # dump whole file to stdout
head <file> # view the first few lines
tail <file> # view the last n lines
0
Nathan Feger

Ich werde hier niemandem die Antwort entziehen, aber ich möchte noch mehr Informationen über die Read-only Mode-Datei hinzufügen. Wie in der Originaldokumentation beschrieben Nur-Lese-Modus In manchen Fällen möchten Sie eine Datei anzeigen, diese jedoch vor versehentlichen Eingaben und Änderungen schützen. (Möglicherweise möchten Sie eine längere Datei aufrufen, um vi-Bewegungen zu üben, oder Sie möchten durch eine Befehlsdatei oder ein Programm blättern.) Sie können eine Datei im schreibgeschützten Modus eingeben und alle vi-Bewegungsbefehle verwenden, die Datei kann jedoch nicht geändert werden.

Geben Sie Folgendes ein, um eine Datei im schreibgeschützten Modus anzuzeigen:

$ vi -R file

oder:

$ view file

(Der Befehl view kann wie der Befehl vi eine beliebige Befehlszeilenoption verwenden, um zu einer bestimmten Stelle in der Datei zu gelangen.) Wenn Sie Änderungen an der Datei vornehmen möchten, können Sie den schreibgeschützten Modus durch überschreiben Hinzufügen eines Ausrufezeichens zum Schreibbefehl:

:w!
or:

:wq!

Wenn Sie ein Problem beim Schreiben der Datei haben.

Für weitere Informationen hier

0