Czy istnieje sposób, aby powiedzieć emacs / vi / vim (z wiersza poleceń), że chcę wyświetlić plik w view-mode
lub read-only
.
Wiem, jak otworzyć plik tylko do odczytu, jeśli emacs / vi / vim już działa.
Czy istnieje sposób, aby powiedzieć emacs / vi / vim (z wiersza poleceń), że chcę wyświetlić plik w view-mode
lub read-only
.
Wiem, jak otworzyć plik tylko do odczytu, jeśli emacs / vi / vim już działa.
Odpowiedzi:
W przypadku emacsa:
emacs FILE --eval '(setq buffer-read-only t)'
Nie ma opcji uruchamiania wymuszającej tylko odczyt.
Edycja:
Jeśli umieścisz tę małą funkcję w skrypcie uruchamiania powłoki (na przykład .bashrc), możesz otworzyć plik tylko do odczytu, wpisującev file_to_view
ev() {
emacs "$1" --eval '(setq buffer-read-only t)'
}
vim -R nazwa pliku
wyświetl nazwę pliku
Zasadniczo vim w trybie tylko do odczytu; proste!
Jak wskazano w komentarzu, w przypadku, gdy view
jest on powiązany z zwykłym vi
, oto polecenia bash , aby najpierw sprawdzić sytuację, a następnie naprawić:
# 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
podświetlanie składni, ale view
nie masz , być może view
jest to link do minimalnej wersji vim
, która nie ma wkompilowanego podświetlania składni. Porównaj wyniki :version
polecenia.
argv[0]
aby zdecydować o swoim zachowaniu. To powszechna sztuczka; AFAIK czasami GCC i Bash również to robią.
vim -R <file>
pozwala pisać z :w!
vim -c ":set nomodifiable" <file>
Zapobiega wprowadzaniu przez użytkownika jakichkolwiek zmian w pliku w buforze. Ale użytkownik może zmodyfikować bufor za pomocą:set modifiable
Możesz użyć
vim -c ":noremap q :q<cr>" -c ":map : <Esc>" -c ":set nomodifiable" <file>
aby uniemożliwić użytkownikowi wyłączenie opcji „nomodifiable” i pozwolić użytkownikowi wyjść z menu, naciskając q
. Ale wtedy użytkownik nie może w ogóle przejść do trybu poleceń, co może być lub nie być tym, czego chcesz.
Możesz także otworzyć plik za pomocą polecenia less:
less <file>
Aby wyświetlić plik w środowisku podobnym do vima, ale bez możliwości zmiany pliku.
less
, chociaż jak wskazuje @nxdrvr, możesz nacisnąć klawisz v , aby otworzyć plik w trybie edytowalnym wvi
Drobne działania następcze w stosunku do zaakceptowanej odpowiedzi: Możesz dokonać aliasu w powłoce, aby zredukować ją do pojedynczego polecenia. Na przykład w bash możesz umieścić następujące .bashrc:
emacsro() {
emacs $1 --eval '(setq buffer-read-only t)'
}
(różne powłoki będą miały do tego różne formaty, ale masz pomysł)
Dodałbym to jako komentarz w odpowiedzi na zaakceptowaną odpowiedź, ale nie wydaje się możliwe, aby w komentarzu znajdował się wieloliniowy blok „kodu” i (w skrócie) powyższy kod naprawdę musi być na 3 osobnych liniach.
Aby wyświetlić plik bez możliwości edycji:
cat <file> | less
W less
można przejść do trybu „Edycja pliku” przez naciśnięcie vklawisza. Ale nie możesz edytować standardowego wejścia, więc przesyłanie danych wyjściowych cat <file>
do mniej, przestaje less
przechodzić do trybu edycji po naciśnięciu „v”.
Dla vima to samo podejście
cat <file> | vim -
v
sugestię. Fajne
cat
. Po prostu użyj <FILENAME less
.
<file> less
dałby błąd, zakładam, że miałeś na myśli less <file>
, ale jak wyjaśniono w odpowiedzi, przy less
bezpośrednim użyciu użytkownik może nacisnąć klawisz v i przejść do trybu edycji. Rurociągi, cat
aby less
temu zapobiec.
less < FILENAME
, co daje „nie można edytować standardowe wejście” po naciśnięciu V . Podobnie z vim: vim - < FILENAME
.
W przypadku emacsa możesz także użyć trybu widoku .
emacsclient --create-frame --eval '(view-file "/tmp/EXAMPLE")'
lub alternatywnie w terminalu:
emacsclient --nw --eval '(view-file "/tmp/EXAMPLE")'
Lub możesz użyć mojego skryptu opakowania
wysyłanie pliku do standardowego wyjścia może być dopuszczalne, biorąc pod uwagę rozmiar pliku
cat <file> # dump whole file to stdout
head <file> # view the first few lines
tail <file> # view the last n lines
Nie zamierzam zdyskredytować żadnej odpowiedzi użytkownika tutaj, ale chciałbym dodać więcej informacji o Read-only Mode
pliku. Zgodnie z dokumentacją oreilly Tryb tylko do odczytu Będą chwile, kiedy chcesz spojrzeć na plik, ale chcesz zabezpieczyć ten plik przed przypadkowymi naciśnięciami klawiszy i zmianami. (Możesz chcieć wywołać długi plik, aby ćwiczyć ruchy vi, lub możesz przewinąć plik poleceń lub program). Możesz wprowadzić plik w trybie tylko do odczytu i użyć wszystkich poleceń ruchu vi, ale nie będziesz mógł go zmienić.
Aby wyświetlić plik w trybie tylko do odczytu, wprowadź:
$ vi -R file
lub:
$ view file
(Polecenie view, podobnie jak polecenie vi, może korzystać z dowolnej opcji wiersza polecenia, aby przejść do określonego miejsca w pliku). Jeśli zdecydujesz się na edycję pliku, możesz zastąpić tryb tylko do odczytu dodając wykrzyknik do polecenia write:
:w!
or:
:wq!
Jeśli masz problem z zapisaniem pliku.
W celu uzyskania dalszych informacji tutaj