Есть ли способ сообщить emacs / vi / vim (из командной строки), что я хочу просмотреть файл в view-mode
или read-only
.
Я знаю, как открыть файл только для чтения, если emacs / vi / vim уже запущен.
Есть ли способ сообщить emacs / vi / vim (из командной строки), что я хочу просмотреть файл в view-mode
или read-only
.
Я знаю, как открыть файл только для чтения, если emacs / vi / vim уже запущен.
Ответы:
Для Emacs:
emacs FILE --eval '(setq buffer-read-only t)'
Там нет опции запуска для принудительного чтения только.
Редактировать:
если вы поместите эту маленькую функцию в скрипт запуска оболочки (например, .bashrc), вы можете открыть файл только для чтения, набравev file_to_view
ev() {
emacs "$1" --eval '(setq buffer-read-only t)'
}
vim -R имя файла
просмотреть имя файла
В основном vim в режиме только для чтения; Simples!
Как подсказывает комментарий, в случае, если view
он связан с равниной vi
, вот команды bash, которые сначала проверяют ситуацию, а затем исправляют ее:
# 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
есть подсветка синтаксиса, но у вас view
ее нет, возможно, view
это ссылка на минимальную версию, в vim
которой не скомпилирована подсветка синтаксиса. Сравните выходные данные :version
команды.
argv[0]
чтобы определить свое поведение. Это обычная уловка; AFAIK иногда GCC и Bash делают это также.
vim -R <file>
позволяет писать с :w!
vim -c ":set nomodifiable" <file>
Запрещает пользователю вносить какие-либо изменения в файл в буфере. Но пользователь может сделать буфер модифицируемым с помощью:set modifiable
Вы могли бы использовать
vim -c ":noremap q :q<cr>" -c ":map : <Esc>" -c ":set nomodifiable" <file>
чтобы предотвратить отключение пользователем «nomodifiable», и позволить пользователю выйти, нажав q
. Но тогда пользователь вообще не может войти в командный режим, который может быть или не быть тем, что вы хотите.
Вы также можете открыть файл с помощью команды less:
less <file>
Для просмотра файла в vim-подобной среде, но без возможности изменить файл.
less
, хотя, как указывает @nxdrvr, вы можете нажать клавишу v, чтобы открыть файл в редактируемом режиме вvi
Небольшое продолжение принятого ответа: вы можете использовать псевдоним в своей оболочке, чтобы свести его к одной команде. Например, в bash вы можете поместить в ваш .bashrc следующее:
emacsro() {
emacs $1 --eval '(setq buffer-read-only t)'
}
(разные оболочки будут иметь разные форматы для этого, но вы поняли)
Я бы добавил это в качестве комментария в ответ на принятый ответ, но не представляется возможным иметь многострочный блок «кода» в комментарии, и (в любом случае, в bash) приведенный выше код действительно должен быть на 3 отдельные строки.
Чтобы просто просмотреть файл без возможности редактирования:
cat <file> | less
В less
вы можете перейти в «режим редактирования файла», нажав vклавишу. Но вы не можете редактировать стандартный ввод, поэтому конвейеризация вывода cat <file>
на less останавливает less
переход в режим «edit» при нажатии «v».
Для VIM тот же подход
cat <file> | vim -
v
предложение. Острота.
cat
. Просто используйте <FILENAME less
.
<file> less
ошибку, я полагаю, вы имели в виду less <file>
, но, как объяснено в ответе, при less
непосредственном использовании пользователь может нажать клавишу v и перейти в режим редактирования. Трубопровод, cat
чтобы less
это не происходило.
less < FILENAME
, что дает вам «Не удается изменить стандартный ввод» при нажатии кнопки V . Аналогично с Vim: vim - < FILENAME
.
Для emacs вы также можете использовать режим просмотра .
emacsclient --create-frame --eval '(view-file "/tmp/EXAMPLE")'
или альтернатива внутри терминала:
emacsclient --nw --eval '(view-file "/tmp/EXAMPLE")'
Или вы можете использовать мой скрипт
отправка файла в std out, может быть приемлемой, учитывая размер файла
cat <file> # dump whole file to stdout
head <file> # view the first few lines
tail <file> # view the last n lines
Я не собираюсь отказываться от чьего-либо ответа пользователя здесь, но я хотел бы добавить больше информации о Read-only Mode
файле. Согласно режиму «Только для чтения», может быть, вы захотите просмотреть файл, но захотите защитить этот файл от случайных нажатий клавиш и изменений. (Возможно, вы захотите вызвать длинный файл, чтобы попрактиковаться в перемещениях vi, или вы можете прокрутить командный файл или программу). Вы можете ввести файл в режиме только для чтения и использовать все команды перемещения vi, но вы не сможете изменить файл.
Чтобы посмотреть файл в режиме только для чтения, введите:
$ vi -R file
или же:
$ view file
(Команда view, как и команда vi, может использовать любой из параметров командной строки для перехода к определенному месту в файле.) Если вы решите внести некоторые изменения в файл, вы можете переопределить режим только для чтения, выполнив добавление восклицательного знака в команду записи:
:w!
or:
:wq!
Если у вас есть проблемы с записью файла.
Для дальнейшей ссылки здесь