Есть ли способ сообщить emacs/vi/vim (из командной строки), что я хочу просматривать файл в view-mode
или read-only
.
Я знаю, как открыть файл только для чтения, если emacs/vi/vim уже запущен.
Есть ли способ сообщить emacs/vi/vim (из командной строки), что я хочу просматривать файл в view-mode
или read-only
.
Я знаю, как открыть файл только для чтения, если emacs/vi/vim уже запущен.
vim -R имя файла
Для Emacs:
emacs FILE --eval '(setq buffer-read-only t)'
Там нет опции запуска для принудительного чтения только.
Редактировать:
Если вы поместите эту маленькую функцию в скрипт запуска оболочки (например, .bashrc), вы можете открыть файл только для чтения, набрав ev file_to_view
ev() {
emacs "$1" --eval '(setq buffer-read-only t)'
}
просмотреть имя файла
В основном 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 -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-подобной среде, но без возможности изменить файл.
Небольшое продолжение принятого ответа: вы можете использовать псевдоним в своей оболочке, чтобы свести его к одной команде. Например, в bash вы можете поместить в ваш .bashrc следующее:
emacsro() {
emacs $1 --eval '(setq buffer-read-only t)'
}
(разные оболочки будут иметь разные форматы для этого, но вы поняли)
Я бы добавил это в качестве комментария в ответ на принятый ответ, но не представляется возможным иметь многострочный блок "кода" в комментарии, и (в любом случае, в bash) приведенный выше код действительно должен быть на 3 отдельные строки.
Чтобы просто просмотреть файл без возможности редактирования:
cat <file> | less
В less
вы можете перейти в "режим редактирования файла", нажав клавишу v . Но вы не можете редактировать стандартного ввода, так перенаправив вывод cat <file>
менее, останавливается less
от перехода в режим редактирования «» на нажатие "V".
Для VIM тот же подход
cat <file> | vim -
Для emacs вы также можете использовать режим просмотра.
emacsclient --create-frame --eval '(view-file "/tmp/EXAMPLE")'
или альтернатива внутри терминала:
emacsclient --nw --eval '(view-file "/tmp/EXAMPLE")'
Или вы можете использовать мой скрипт
В Emacs вы можете сделать
emacs FILE -f view-mode
Подсветка синтаксиса применяется. Он не просто открывает файл как буфер только для чтения. В этом режиме некоторые команды, такие как I-search, доступны без клавиши управления.
отправка файла в 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!
Если у вас есть проблемы с записью файла.
Для дальнейшей ссылки здесь