Gf जैसे कर्सर के तहत फ़ाइल नाम खोलें, लेकिन एक नए टैब (या विभाजन) में?


43

सामान्य मोड कमांड gfएक फ़ाइल पर जाता है जिस पथ पर कर्सर वर्तमान में है।

लेकिन यह वर्तमान विंडो में वर्तमान पाठ की जगह ऐसा करता है। इसका मतलब है कि आपको बाद में वापस जाने के लिए स्पष्ट रूप से वापस नेविगेट करने की आवश्यकता है, और आपको वर्तमान बफर संभावित रूप से परिवर्तन लिखने की आवश्यकता है।

मुझे यकीन है कि इसके बजाय नए टैबव्यू में कर्सर के तहत फाइल को खोलना संभव है?


3
'hidden'विकल्प चालू ( set hidden) करने से आप बिना सहेजे हुए बफ़र्स से दूर जा सकते हैं। मेरे लिए, यह एक विशाल उत्पादकता बूस्टर था, और विभाजन और टैब पर इतना भरोसा करना बंद करने के लिए महत्वपूर्ण था।
tommcdo

जवाबों:


56

संपादित करें: ऊर्ध्वाधर विभाजन मामले के लिए अच्छी तरह से सममित मैपिंग का सुझाव दें, क्योंकि डिफ़ॉल्ट रूप से विम क्षैतिज विभाजन मामले के लिए दो मैपिंग है।

"कर्सर के तहत फ़ाइल" को संपादित करने के कई तरीके हैं, और जब आप निश्चित gfरूप से @ अलेक्जेंडर-मायशोव के रूप में एक नए टैबपेज में संपादित करने के लिए रीमैप कर सकते हैं , तो इसका मतलब है कि आपके पास नए टैबपेज में इसे संपादित करने के दो तरीके हैं, लेकिन कोई तरीका नहीं इसे वर्तमान विंडो में संपादित करें, जिसे आप कभी-कभी करना भी चाहते हैं। मानक मैपिंग का उपयोग करना कठिन नहीं है, लेकिन यदि आप उनमें से किसी एक को रीमैप करना चाहते हैं gf, तो मैं मैपिंग को स्विच करने का सुझाव दूंगा , ताकि आप उनमें से एक को न खोएं।

कर्सर के नीचे फ़ाइल नाम संपादित करने के कुछ तरीके हैं

  • gf - एक ही विंडो में कर्सर के नीचे मौजूदा फ़ाइल को संपादित करें
  • C-Wf - विभाजित विंडो में कर्सर के तहत मौजूदा फ़ाइल को संपादित करें
  • C-WC-F - विभाजित विंडो में कर्सर के तहत मौजूदा फ़ाइल को संपादित करें
  • C-Wgf - नए टैबपेज में कर्सर के तहत मौजूदा फ़ाइल को संपादित करें

वर्टिकल स्प्लिट में कर्सर के नीचे मौजूदा फाइल को एडिट करने के लिए कोई स्टैंडर्ड मैपिंग नहीं है, लेकिन आप इसे पहले विंडो को लंबवत विभाजित करके और फिर मौजूदा विंडो में कर्सर के तहत फाइल को एडिट करके प्राप्त कर सकते हैं।

  • C-Wv+ gf- वर्टिकली स्प्लिट विंडो में कर्सर के नीचे मौजूदा फाइल को एडिट करें

जैसा कि आप ऊपर देख सकते हैं, क्षैतिज विभाजन में कर्सर के तहत फ़ाइल को संपादित करने के लिए दो डिफ़ॉल्ट मैपिंग हैं। इसलिए, आप उनमें से एक को ऊपर की ओर कीपिंग कर सकते हैं, नक्शे के समूह को विस्तारित करते हुए ऊर्ध्वाधर विभाजन के मामले को भी कवर कर सकते हैं। आप निश्चित रूप से कुछ भी बांध सकते हैं, लेकिन यह समरूपता को अच्छी तरह से पूरा करने के लिए लगता है nnoremap <C-W><C-F> <C-W>vgf:। अब आपके पास है

  • gf - एक ही विंडो में कर्सर के नीचे मौजूदा फ़ाइल को संपादित करें
  • C-Wf - विभाजित विंडो में कर्सर के तहत मौजूदा फ़ाइल को संपादित करें
  • C-WC-F - वर्टिकली स्प्लिट विंडो में कर्सर के नीचे मौजूदा फाइल को एडिट करें
  • C-Wgf - नए टैबपेज में कर्सर के तहत मौजूदा फ़ाइल को संपादित करें

आप फ़ाइल में एक विशेष लाइन पर भी जा सकते हैं, यदि कर्सर के नीचे फ़ाइल नाम एक लाइन नंबर के बाद है। यदि आपके पास है

filename:10

आप फ़ाइल को संपादित कर सकते हैं और 10 के साथ कर्सर को लाइन में ले जा सकते हैं gFC-WFएक विभाजन के लिए और C-WgFएक टैब पृष्ठ के लिए बराबर है । एक ऊर्ध्वाधर विभाजन के लिए समरूपता को पूरा करना यहां उतना सीधा नहीं है, लेकिन मैं सुझाव दूंगा कि उम्मीदवार के रूप में डिफ़ॉल्ट नक्शे से या + की नकल करते हुए, C-WC-S-Fप्राप्त नक्शे के साथ।nnoremap <C-W><C-S-F> <C-W>vgFFShiftf

:एक उदाहरण के लिए, आप किसी भी चरित्र है कि एक फ़ाइल नाम चरित्र (दिखाई नहीं दे रहा है का उपयोग कर सकते है :h 'isfname')।


ये सभी कमांड ऐप्पल सॉस के साथ आते हैं, जैसे कि

  • वन्यजीवों का विस्तार करें
  • अपने 'path'विकल्प के अनुसार, वर्तमान निर्देशिका से अधिक स्थानों पर देखें
  • फ़ाइल नाम में फ़ाइल 'suffixesadd'विकल्प जोड़ना, आपके विकल्प के अनुसार
  • अन्यथा दिए गए फ़ाइलनाम को अपने 'includeexpr'विकल्प के अनुसार, मैच खोजने के लिए संशोधित करें

:help gfइन विभिन्न विकल्पों के लिए और अधिक पढ़ें और मदद विषय।


यदि कर्सर के नीचे फ़ाइल नाम एक फ़ाइल का नाम है जो मौजूद नहीं है, तो आप मानक संपादन आदेशों का उपयोग करने के लिए बेहतर हो सकते हैं <cfile>, जैसे

:edit <cfile> // edit non-existent file under cursor in current window
:split <cfile> // edit non-existent file under cursor in split window
:vsplit <cfile> // edit non-existent file under cursor in vertical split window
:tabe <cfile> // edit non-existent file under cursor in new tabpage

और निश्चित रूप से आप ऐसी चीजों का उपयोग कर सकते हैं जैसे :spl+10 filenameकर्सर को किसी विशेष रेखा :tabe+/cologne filenameपर ले जाने के लिए या किसी पैटर्न की पहली घटना के लिए कर्सर को स्थानांतरित करने के लिए।


+1 स्पष्ट स्पष्टीकरण के साथ सर्वश्रेष्ठ टिप्पणी, कई विषयों में प्रलेखन विभाजन से बेहतर।
संभावना

8

बस इसके लिए बाइंडिंग का उपयोग करें:

एक नई विंडो में खोलना (विभाजन):

nnoremap gf <C-W>f
vnoremap gf <C-W>f

एक नए टैब में खुल रहा है:

nnoremap gf <C-W>gf
vnoremap gf <C-W>gf

इसे भी देखें: :help CTRL-W_gf


क्या ये निश्चित रूप से आपके लिए काम करते हैं? विम मुझे gfकुछ और करने के लिए रीमैप करने के लिए नहीं लगता है। यहां तक ​​कि nnoremap gf :echo "hello"<CR> अभी भी कर्सर को एक नए बफर में फ़ाइल को खोलता है (और हां, मुझे vimrc खट्टा है)।
tandrewnichols

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