जवाबों:
यदि आप करना चाहते हैं तो हाँ, ls
प्रयास करें:
:!ls
शेल खोलना, उपयोग करना
:shell
:w !sudo tee %
nano
मैं ctrl+z
vi का उपयोग करने के लिए सोता हूं, जो मुझे शेल में चाहिए, उसे चलाएं, fg
फिर vi को फिर से शुरू करने के लिए। आपके प्रश्न का उत्तर बिल्कुल नहीं है, लेकिन मुझे यह काम करने का बहुत तेज़ तरीका लगता है।
यदि आप भूल जाते हैं कि आपके पास पृष्ठभूमि में vi खुला है (यह तब हो सकता है जब आप व्यस्त हों), जब आप शेल का उपयोग करके लॉग आउट करने का प्रयास करते हैं, तो आपको ctrl+d
चेतावनी दी जाएगी कि आपके पास पृष्ठभूमि की नौकरियां चल रही हैं, और आप उन्हें बंद कर सकते हैं, या हिट करने के लिए फिर से लॉग आउट करने के लिए ctrl + d मारा। इसके अलावा, यदि आप एक ही फ़ाइल को दो बार फिर से खोलने की कोशिश करते हैं, तो आपको एक रिकवरी चेतावनी मिलती है, जिससे आप a
vi पर वापस जाने के लिए गर्भपात, और fg चलाने के लिए दबा सकते हैं।
चूंकि आपने "स्टडआउट प्राप्त किया" का उल्लेख किया है, ध्यान दें कि आप कर सकते हैं
:r! command
और कमांड का आउटपुट फ़ाइल में जोड़ा जाएगा, या
:<range>!command
श्रेणी की सामग्री को कमांड के माध्यम से फ़िल्टर किया गया है [जैसे :1,$!wc
]
:%!command
बहुत उपयोगी लग रहा है
:.,+20 !sort
]
मेरा पसंदीदा मुहावरा है
!!command
जिसके लिए आशुलिपि है
:.!command
जो कमांड के माध्यम से करंट लाइन को पाइप करता है और आउटपुट को फाइल में इंसर्ट करता है। मेरे लिए सबसे आम मामला vi के साथ कमांड को संपादित करना और चलाना है:
!!sh
या
!<motion>command
जैसे (उदाहरण के लिए)
!apsh
शेल के माध्यम से पूरे वर्तमान पैराग्राफ को चलाने के लिए।
!}
आपको पैराग्राफ की शुरुआत में तैनात होना है, कोशिश करें !ap
। (मुझे नहीं पता कि यह हर vi या केवल vim में है)
बृहदान्त्र और विस्मयादिबोधक बिंदु का उपयोग करके आप शेल पथ और शेल स्क्रिप्ट में किसी भी कमांड को चला सकते हैं, ध्यान रखें कि कमांड vi / vim प्रोग्राम चलाने वाले उपयोगकर्ता के तहत चलता है, और यह पर्यावरण का उपयोग कर रहा है।
:!<command>
चूंकि vi उस वातावरण का उपयोग करता है जो चलने पर प्रभाव में था, यह उसी पथ का उपयोग करता है जो मूल कमांड में था। ध्यान रखें कि कुछ गोले मार्ग में कार्यक्रमों का एक कैश रखते हैं, और vi इस कैश के साथ काम नहीं कर सकते हैं (यह जिस शेल का उपयोग करता है और यह संस्करण है उस पर निर्भर करता है), इसलिए आप गलत बाइनरी को समाप्त कर सकते हैं यदि आपके पास अधिक है एक ही नाम के साथ एक से अधिक बाइनरी।
मेरे पास मेरे .vimrc में है। कुछ समय पहले स्टैक ओवरफ्लो पर मिला:
" Executes the current line in a bash shell; syntactically similar to slimv's ,d feature
:nmap ,,d Y:!<C-R>"<C-H><CR>
मैं दो टर्मिनल कमांड लाइन की खिड़कियां खोलकर, एक में वीआई चला रहा हूं और एक ही समय में अन्य काम के लिए उपलब्ध है।