मैं केवल emacs / vi / vim के साथ कमांड लाइन से एक फ़ाइल को कैसे खोल सकता हूं


79

क्या emacs / vi / vim (कमांड लाइन से) यह बताने का कोई तरीका है कि मैं फ़ाइल को view-modeया में देखना चाहता हूं read-only

मुझे पता है कि किसी फाइल को कैसे पढ़ना है, यह केवल तभी पढ़ें जब emacs / vi / vim पहले से चल रहा हो।


नोट: यदि आपके पास फ़ाइल के लिए लिखित अनुमति नहीं है, तो Vim डिफ़ॉल्ट रूप से इसे रीड-ओनली मोड में खोल देगा। वास्तव में, मुझे लगता है कि "रीड-ओनली" तरीका प्रदान करने की तुलना में फ़ाइल अनुमति को नियंत्रित करना अधिक आसान है।
फ्रैंकलिन यू

जवाबों:


45

Emacs के लिए:

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

केवल पढ़ने के लिए बाध्य करने के लिए कोई स्टार्टअप विकल्प नहीं है।

संपादित करें:
यदि आप अपने शेल स्टार्टअप स्क्रिप्ट (उदाहरण के लिए .bashrc) में इस छोटे फ़ंक्शन को डालते हैं, तो आप केवल-पढ़कर केवल एक फ़ाइल खोल सकते हैंev file_to_view

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

11
काश मैं इसके लिए emacs downvote कर सकता।
रॉबर्ट कैलहॉन

145

vim -R फ़ाइल नाम


4
महान काम करता है लेकिन मैंने ट्रे के उत्तर को स्वीकार कर लिया क्योंकि मैं
निफ़ल

32
और सभी विम उपयोगकर्ता इसे "स्वीकार किए गए उत्तर" से अधिक के लिए बदलकर बदला लेते हैं: डी
ज़ोसोफ़ॉक्स

1
नोट: कुछ बॉक्स में 'व्यू' कमांड हो सकता है कि एलियास से 'vi -R' हो।
सेनाफोडा 12mnkeys

26

फ़ाइल नाम देखें

मूल रूप से रीड-ओनली मोड में विम; साधारण!

टिप्पणी से संकेत दिया के रूप में, मामले में 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)

1
हालांकि कोई वाक्य रचना हाइलाइटिंग नहीं है।
निफ़ले

7
@ निफ़ल: सिंटैक्स हाइलाइटिंग में कोई अंतर नहीं होना चाहिए। यदि आपका vimसिंटैक्स हाइलाइटिंग है, लेकिन आपका viewनहीं है, तो शायद आपका viewएक न्यूनतम संस्करण के लिए लिंक vimहै, जिसमें सिंटैक्स हाइलाइट संकलित नहीं है, :versionकमांड के आउटपुट की तुलना करें ।
गैरीजोन

1
कारण है कि यह "सिर्फ काम करता है": विम वास्तव में argv[0]अपने व्यवहार को तय करने के लिए पढ़ेगा । यह एक आम चाल है; AFAIK कभी-कभी जीसीसी और बैश भी ऐसा करता है।
फ्रैंकलिन यू

10
vim -R <file>

के साथ लिखने की अनुमति देता है :w!

vim -c ":set nomodifiable"  <file>

बफर में फ़ाइल में कोई भी परिवर्तन करने से उपयोगकर्ता को रोकता है। लेकिन उपयोगकर्ता बफर को संशोधित कर सकता है:set modifiable

आप उपयोग कर सकते हैं

vim -c ":noremap q :q<cr>" -c ":map : <Esc>" -c ":set nomodifiable" <file>

उपयोगकर्ता को "नाममात्र" को बंद करने से रोकने के लिए, और उपयोगकर्ता को दबाकर छोड़ने की अनुमति दें q। लेकिन, तब उपयोगकर्ता कमांड मोड में प्रवेश नहीं कर सकता है, जो आप चाहते हैं या नहीं हो सकता है।

आप कम कमांड वाली फाइल भी खोल सकते हैं:

less <file>

फ़ाइल को विम-जैसे वातावरण में देखने के लिए, लेकिन फ़ाइल को बदलने की क्षमता के बिना।


+1 का उपयोग करने के लिए less, हालाँकि @nxdrvr के अनुसार, आप संपादन योग्य मोड में फ़ाइल को खोलने के लिए v कुंजी दबा सकते हैंvi
Shehariar

9

स्वीकार किए गए उत्तर के लिए छोटे अनुवर्ती: आप इसे एक आदेश में कम करने के लिए अपने शेल में इसे उर्फ ​​कर सकते हैं। उदाहरण के लिए बैश में आप अपने .bashrc में निम्नलिखित डाल सकते हैं:

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

(अलग-अलग गोले ऐसा करने के लिए अलग-अलग प्रारूप होंगे, लेकिन आपको यह विचार मिलता है)

मैंने इसे स्वीकृत उत्तर के जवाब में एक टिप्पणी के रूप में जोड़ा होगा, लेकिन एक टिप्पणी में एक बहु-पंक्ति "कोड" ब्लॉक होना संभव नहीं था, और (वैसे भी) उपरोक्त कोड में वास्तव में होने की आवश्यकता है 3 अलग लाइनों पर।


6

संपादित करने की क्षमता के बिना फ़ाइल देखने के लिए:

cat <file> | less

में lessआप दबाकर "संपादित फ़ाइल मोड" पर जा सकते हैं vकुंजी। लेकिन आप मानक इनपुट को संपादित नहीं कर सकते हैं, इसलिए आउटपुट cat <file>को कम करने के लिए, less'v' दबाने पर 'संपादन' मोड में जाने से रोकता है।

उसी दृष्टिकोण के लिए

cat <file> | vim -

4
vसुझाव के लिए धन्यवाद । निफ्टी।
tshepang

2
+1, लेकिन इसकी कोई आवश्यकता नहीं है cat। बस उपयोग करें <FILENAME less
स्पार्कहॉक

@Sparkhawk, <file> lessएक त्रुटि देगा, मैं आपको मान रहा हूं less <file>, लेकिन जैसा कि उत्तर में बताया गया है, lessसीधे उपयोग करते समय, उपयोगकर्ता v कुंजी दबा सकता है और संपादन-मोड में जा सकता है। यह होने से रोकने के catलिए पाइपिंग less
शेहरार

@ शेहरर का मतलब था कि आउटपुट पुनर्निर्देशन। शायद आप अधिक परिचित हैं less < FILENAME, जो आपको V दबाते समय "मानक इनपुट संपादित नहीं कर सकता" देता है । इसी तरह विम के साथ vim - < FILENAME:।
फ्रैंकलिन यू

4

Emacs के लिए आप व्यू-मोड का भी उपयोग कर सकते हैं ।

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

या टर्मिनल के अंदर विकल्प:

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

या आप मेरे रैपर स्क्रिप्ट का उपयोग कर सकते हैं


1

Emacs में आप कर सकते हैं

emacs FILE -f view-mode

सिंटेक्स हाइलाइटिंग लागू किया जाता है। यह फ़ाइल को केवल पढ़ने के लिए बफर के रूप में नहीं खोलता है। कुछ कमांड, जैसे कि I- खोज, इस मोड में नियंत्रण कुंजी के बिना पहुंच योग्य हैं।


0

किसी फ़ाइल को std से बाहर भेजना, फ़ाइल के आकार को देखते हुए स्वीकार्य हो सकता है

cat <file>  # dump whole file to stdout
head <file> # view the first few lines
tail <file> # view the last n lines

0

मैं यहां किसी को भी उपयोगकर्ता के जवाब के लिए नहीं जा रहा हूं, लेकिन मैं Read-only Modeफ़ाइल के बारे में कुछ और जानकारी देना चाहूंगा । ओविली डॉक्यूमेंटेशन के अनुसार रीड-ओनली मोड ऐसा समय होगा जब आप किसी फाइल को देखना चाहते हैं, लेकिन उस फाइल को अनजाने कीस्ट्रोक्स और परिवर्तनों से बचाना चाहते हैं। (आप vi आंदोलनों का अभ्यास करने के लिए एक लंबी फ़ाइल में कॉल करना चाह सकते हैं, या आप कमांड फ़ाइल या प्रोग्राम के माध्यम से स्क्रॉल करना चाह सकते हैं)। आप केवल-पढ़ने के लिए मोड में एक फ़ाइल दर्ज कर सकते हैं और सभी vi आंदोलन कमांड का उपयोग कर सकते हैं, लेकिन आप फ़ाइल को बदलने में सक्षम नहीं होंगे।

फ़ाइल को केवल पढ़ने के लिए मोड में देखने के लिए, या तो दर्ज करें:

$ vi -R file

या:

$ view file

(व्यू कमांड, जैसे vi कमांड, फ़ाइल में किसी विशिष्ट स्थान पर आगे बढ़ने के लिए कमांड-लाइन विकल्पों में से किसी का उपयोग कर सकता है।) यदि आप फ़ाइल में कुछ संपादन करने का निर्णय लेते हैं, तो आप रीड-ओनली मोड को ओवरराइड कर सकते हैं। लिखने के आदेश में एक विस्मयादिबोधक बिंदु जोड़ना:

:w!
or:

:wq!

यदि आपको फ़ाइल लिखने में कोई समस्या है।

आगे रेफरी के लिए यहाँ

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.