سؤال كيف يمكنني فتح ملف للقراءة فقط من سطر الأوامر مع emacs / vi / vim


هل هناك طريقة لمعرفة emacs / vi / vim (من سطر الأوامر) التي أريد عرض الملف فيها view-mode أو read-only.

أعرف كيفية فتح ملف للقراءة فقط إذا كان emacs / vi / vim قيد التشغيل بالفعل.


76
2017-10-28 09:46


الأصل


ملاحظة: إذا لم يكن لديك إذن الكتابة للملف ، فسيقوم Vim بفتحه افتراضيًا في وضع القراءة فقط. في الواقع ، أعتقد أنه من السهل التحكم في إذن الملف بدلاً من توفير طريقة "للقراءة فقط". - Franklin Yu


الأجوبة:


ل emacs:

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

لا يوجد خيار بدء التشغيل لقوة القراءة فقط.

تصحيح:
إذا وضعت هذه الوظيفة الصغيرة في البرنامج النصي لبدء تشغيل shell (.bashrc على سبيل المثال) ، يمكنك فتح ملف للقراءة فقط بكتابة ev file_to_view 

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

43
2017-10-28 13:50



أتمنى أن أتمكن من تقليد emacs لهذا. - Robert Calhoun


vim -R اسم الملف


145
2017-10-28 09:51



يعمل بشكل رائع ولكني قبلت رواية "تيري" لأنني أفضل استخدام emacs عبر vim - Nifle
وجميع المستخدمين vim الانتقام من قبل upvoting إلى أكثر من "الإجابة المقبولة": د - Xosofox
ملاحظة: يبدو أن بعض المربعات لها أمر "العرض" ربما تكون عبارة عن أسماء مستعارة لـ "vi -R". - armyofda12mnkeys


عرض اسم الملف

أساسا vim في وضع للقراءة فقط؛ البسطاء!

كما ألمح بالتعليق ، في القضية view يرتبط سهل vi، هنا سحق الأوامر لفحص الموقف أولاً ثم إصلاحه:

# 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
2017-10-28 10:43



لا تظليل بناء على الرغم من ذلك. - Nifle
Nifle: لا ينبغي أن يكون هناك أي اختلاف في تسليط الضوء على بناء الجملة. إذا كان لديك vim تسليط الضوء على تركيب لكن لديك view لا ، ربما لديك view هو رابط لنسخة قليلة من vim التي ليس لديها تسليط الضوء على تجميع تجميعها في. مقارنة مخرجات :version أمر. - garyjohn
السبب في أنه "يعمل فقط": سوف يقرأ فيم فعلا argv[0] لتقرر سلوكها. إنها خدعة شائعة ؛ AFAIK أحيانا دول مجلس التعاون الخليجي وباش يفعل هذا أيضا. - Franklin Yu


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 ولكن بدون القدرة على تغيير الملف.


10
2017-10-28 18:10



+1 للاستخدام less، على الرغم من أنnxdrvr يشير إلى أنه يمكنك الضغط على الخامس مفتاح لفتح الملف في الوضع القابل للطباعة في vi - Sheharyar


متابعة صغيرة للإجابة المقبولة: يمكنك هذا الاسم المستعار في shell لتقليله إلى أمر واحد. على سبيل المثال ، في bash ، يمكنك وضع ما يلي في .bashrc:

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

(ستحتوي الأصداف المختلفة على تنسيقات مختلفة للقيام بذلك ، لكنك تحصل على الفكرة)

كنت قد أضفت هذا كتعليق رداً على الإجابة المقبولة ، ولكن لم يكن من الممكن وجود كتلة "كود" متعددة الأسطر في تعليق ، و (في bash على أي حال) ، يجب أن يكون الرمز أعلاه بالفعل على 3 خطوط منفصلة.


8
2017-10-31 23:50





لعرض الملف فقط دون القدرة على التحرير:

cat <file> | less

في less يمكنك الذهاب إلى "تحرير وضع الملف" عن طريق الضغط على الخامس مفتاح. ولكن لا يمكنك تحرير مدخلات قياسية ، لذلك أنابيب الإخراج cat <file> إلى أقل ، يتوقف less من الانتقال إلى وضع "تعديل" عند الضغط على "v".

لفيم نفس النهج

cat <file> | vim -

5
2018-03-21 08:32



شكرا ل v اقتراح. أنيق. - Tshepang
+1 ، ولكن لا حاجة لذلك cat. مجرد استخدام <FILENAME less. - Sparhawk
Sparkhawk، <file> less سيعطي خطأ ، أفترض أنك تقصد less <file>، ولكن كما هو موضح في الجواب ، عند استخدام less مباشرة ، يمكن للمستخدم الضغط الخامس المفتاح والانتقال إلى وضع التحرير. الأنابيب cat إلى less يوقف هذا من الحدوث. - Sheharyar
Sheharyar كان يعني إعادة توجيه الإخراج. ربما كنت أكثر دراية less < FILENAME، والتي تمنحك "يتعذر تحرير الإدخال القياسي" عند الضغط الخامس. وبالمثل مع فيم: vim - < FILENAME. - Franklin Yu


ل emacs يمكنك أيضا استخدام نمط العرض.

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

أو بديل داخل محطة:

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

أو يمكنك استخدام بلدي البرنامج النصي المجمع 


4
2017-09-12 15:01





في emacs يمكنك القيام به

emacs FILE -f view-mode

يتم تطبيق تسليط الضوء على بناء الجملة. لا فقط فتح الملف كمسرد قراءة فقط. يمكن الوصول إلى بعض الأوامر ، مثل I-search ، دون مفتاح التحكم في هذا الوضع.


1
2018-02-10 18:37