Чи є спосіб сказати 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 в режимі лише для читання; симпле!
Як натякає коментар, у випадку, якщо 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 <file>
Перегляд файлу у середовищі, подібному до vim, але без можливості змінити файл.
less
, хоча як зазначає @nxdrvr, ви можете натиснути клавішу v, щоб відкрити файл у редагованому режимі вvi
Невелике подання до прийнятої відповіді: Ви можете вказати цей псевдонім у своїй оболонці, щоб зменшити його до однієї команди. Наприклад, у bash ви можете помістити у свій .bashrc:
emacsro() {
emacs $1 --eval '(setq buffer-read-only t)'
}
(різні оболонки матимуть різні формати для цього, але ви розумієте)
Я додав би це як коментар у відповідь на прийняту відповідь, але, здавалося, неможливо мати в рядку коментаря багаторядковий блок «код», і (в іншому випадку) вищенаведений код справді повинен бути на 3 окремих рядки.
Щоб просто переглянути файл без можливості редагування:
cat <file> | less
У less
ви можете перейти в «режим редагування файлу», натиснувши vклавішу. Але ти не можеш редагувати стандартний вхід, тому cat <file>
перехід на вихід до меншого розміру перестає less
переходити в режим «редагування» натисканням кнопки «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, може бути прийнятним з огляду на розмір файлу
cat <file> # dump whole file to stdout
head <file> # view the first few lines
tail <file> # view the last n lines
Я не збираюся тут відкидати відповідь комусь, але я хотів би додати ще трохи інформації про Read-only Mode
файл. Відповідно до документації oreilly Режим лише для читання Будуть випадки, коли ви хочете переглянути файл, але хочете захистити цей файл від ненавмисних натискань клавіш і змін. (Можливо, ви захочете зателефонувати у тривалий файл, щоб практикувати переміщення vi, або ви можете прокрутити командний файл або програму). Ви можете ввести файл у режимі лише для читання та використовувати всі команди vi-руху, але змінити файл ви не зможете.
Щоб переглянути файл у режимі лише для читання, введіть або:
$ vi -R file
або:
$ view file
(Команда view, як і команда vi, може використовувати будь-який з параметрів командного рядка для просування до певного місця у файлі.) Якщо ви вирішите внести деякі зміни у файл, ви можете змінити режим лише для читання додавання знаку оклику до команди write:
:w!
or:
:wq!
Якщо у вас є проблема з написанням файлу.
Для подальшої посилання тут