मैं वर्तमान फ़ाइल का पूर्ण पथ कैसे देख सकता हूं?


123

जब मैं विम में एक फ़ाइल संपादित कर रहा हूं, तो क्या वर्तमान फ़ाइल का पथ देखने के लिए कोई कमांड है? कभी-कभी यह बहुत आसान होता है अगर किसी प्रोजेक्ट में एक ही नाम की कई फाइलें हों।

जवाबों:


142

आप दबा सकते हैं {count}Ctrl-G:

{count}CTRL-G       Like CTRL-G, but prints the current file name with
                    full path.  If the count is higher than 1 the current
                    buffer number is also given.

1इसके बाद दबाया Ctrl+ Gवर्तमान फ़ाइल का पूरा रास्ता दिखाता है। यदि {count}1 से अधिक है, तो बफर नाम भी दिखाया जाएगा।

(केवल दबाने Ctrl+ GVim की वर्तमान कार्य निर्देशिका के सापेक्ष पथ दिखाता है, जैसा कि टिप्पणियों में जैस्पर ने बताया है।)

आप निम्न .vimrcपंक्ति का उपयोग करके स्टेटस लाइन में पूरा रास्ता जोड़ सकते हैं , इसलिए यह हमेशा दिखाई देता है:

set statusline+=%F

4
क्या Ctrl+G'विम के सीडब्ल्यूडी के सापेक्ष पथ' अधिक पसंद नहीं है ?
जैस्पर

@ जैस्पर अच्छा कैच! उत्तर अपडेट किया गया।
थमेरा

4
ऐसा लगता है C-gकि इसके लिए डिफ़ॉल्ट है 0C-g, और इसके अलावा बफर इंडेक्स नंबर (1 से शुरू) 2C-gदिखाता है ।

मैं आपके उत्तर को उत्थान करने के लिए 100 वें होने के लिए बहुत खुश हूँ! इसके लिए धन्यवाद 1C-g!
तिजोरी

52

रजिस्टर %में वर्तमान फ़ाइल का नाम है।

दिखाई गई जानकारी को प्रदर्शित करने के लिए निम्नलिखित आदेश दर्ज किए जा सकते हैं:

:echo @%                |" directory/name of file
:echo expand('%:t')     |" name of file ('tail')
:echo expand('%:p')     |" full path
:echo expand('%:p:h')   |" directory containing file ('head')

सभी चाहते थे जाता है कि वर्तमान फ़ाइल, प्रकार का नाम प्रदर्शित करने के लिए है, तो :f/ :lsया प्रेस Ctrl- g(पूर्ण पथ प्रेस के लिए 1तो Ctrl- g)।

इन्सर्ट मोड में, टाइप करें Ctrl- rफिर %करेंट फाइल का नाम डालने के लिए।

निम्न आदेशों में वर्तमान और वैकल्पिक फ़ाइलों के पूर्ण पथ से युक्त लाइनें बफर में सम्मिलित हैं:

:put =expand('%:p')
:put =expand('#:p')

स्रोत: vim विकिया में वर्तमान फ़ाइल का नाम प्राप्त करें

सम्बंधित:


2
यह ध्यान देने योग्य हो सकता है कि आप आवेषण मोड में =expand...होने के बाद भी उन अभिव्यक्तियों का उपयोग कर सकते Ctrl-Rहैं।
डैश-टॉम-बैंग

22

आप :!ls %:pवर्तमान फ़ाइल के लिए पूर्ण पथ प्राप्त करने के लिए उपयोग कर सकते हैं ।

पूर्व संदर्भ के आधार पर, %या तो फ़ाइल या फ़ाइल नाम की सामग्री का मतलब होगा। बाहर खोलते समय, यह वर्तमान निर्देशिका के सापेक्ष फ़ाइल पथ का प्रतिनिधित्व करता है। कमांड ' %:p' पूर्ण पथ फ़ाइल नाम संशोधक को जोड़ देगा %

कुछ अन्य दिलचस्प फ़ाइल नाम संशोधक हैं:

  • :~: घर निर्देशिका के सापेक्ष फ़ाइल पथ प्राप्त करें (यह किसी कारण से मेरे लिए काम नहीं करता है)
  • :.: वर्तमान निर्देशिका के सापेक्ष फ़ाइल पथ प्राप्त करें ( %डिफ़ॉल्ट)
  • :r: फ़ाइल का नाम रूट। एक्सटेंशन के बिना फ़ाइल का नाम।
  • :e: फ़ाइल का विस्तार।
  • :h: विभाजित करें /और बाएं आधे को लौटाएं (यानी अगर मैं किसी पथ को फ़ाइल में संपादित कर रहा हूं /tmp/test.txtऔर चलाऊंगा %:p:hतो वापस आ जाएगा/tmp
  • :t: विभाजन करें /और दाएं आधे पर लौटें (यानी अगर मैं किसी पथ में फ़ाइल संपादित कर रहा हूं /tmp/test.txtऔर चलाऊंगा %:p:tतो वापस आ जाएगाtext.txt

मुझे लगता है कि आप%: p: t का पाठ text.txt
John O'M पर लौटाएंगे।

@ JohnO'M। हां, यह सही है धन्यवाद: डी। फिक्स्ड।
चार्ल्स

7

एक के साथ वर्तमान कार्य निर्देशिका देख सकते हैं :pwd। बेशक, यह केवल निर्देशिका है, और फ़ाइल नाम नहीं है। कार्य निर्देशिका और फ़ाइल नाम प्राप्त करने के लिए, हम विशेष रजिस्टर का उपयोग कर सकते हैं %, जिसमें वर्तमान फ़ाइल के बारे में जानकारी है।

यदि आप उपयोग करते हैं :echo @%, तो आपको वर्तमान फ़ाइल की निर्देशिका और फ़ाइल नाम मिलेगा।
यदि आप उपयोग करते हैं :echo expand('%:p'), तो आपको वर्तमान फ़ाइल का पूर्ण पथ और फ़ाइल नाम मिलेगा। यह चार्ल्सएल के उत्तर के समान है ।

मैं इस एक याद है, हालांकि, क्योंकि अगर आप vim की मदद का उपयोग करें :h expand, तो यह कहा गया है कि %और %:pऔर उनके रिश्तेदारों।



3

सभी फ़ाइलों के लिए पूर्ण पथ दिखाने के लिए, जिसमें हल किए गए सिमलिंक भी शामिल हैं, निम्नलिखित का उपयोग करें।

:echo resolve(expand('%:p'))

3

बेहतर उत्तर हैं, लेकिन यदि (किसी कारण से) आप फ़ाइल का पूर्ण पथ प्राप्त करने के लिए शेल का उपयोग करना चाहते हैं (यह अधिक उपयोगी है यदि आप शेल के साथ फ़ाइल पर कुछ अन्य ऑपरेशन करने जा रहे हैं), यूनिक्स जैसी प्रणाली पर आप चला सकते हैं:

:!realpath %

या:

:'<,'>!realpath %

वर्तमान चयन पर दस्तावेज़ में पथ सम्मिलित करने के लिए।

रजिस्टर में %हमेशा फ़ाइल का नाम होता है। एक realworld उदाहरण हो सकता है यदि आप एक कॉन्फ़िग फ़ाइल को संपादित कर रहे हैं, लेकिन आपके पास लिखने की अनुमति नहीं है (और रूट के रूप में ओटी रन नहीं चाहते हैं), तो आप फ़ाइल को संपादित कर सकते हैं, फिर चलाएं:

:w ! sudo tee %

फ़ाइल को बचाने के लिए (वहां एक छोटा सा ऑफटॉपिक, लेकिन यह %रजिस्टर के साथ और क्या किया जा सकता है इसका एक अच्छा उदाहरण है )।


realpathPOSIX नहीं है, इसलिए ऐसा करना सरल हो सकता है:!echo "$PWD/%"
muru

माना; अच्छा निर्णय।
सैम व्हीट

2

आपको देखने के लिए अपनी स्थिति रेखा सेट करने की आवश्यकता है और इसे पथ पर भी सेट करना है। मैंने स्थायी रूप से अपने ~ / .vimrc के नीचे दो पंक्तियों को जोड़कर किया

set laststatus=2
set statusline+=%F

अगर आप बस एक बार उसे चलाना चाहते हैं। फिर जब डॉक्यूमेंट टाइप करें

:set laststatus=2       <ENTER>
:set statusline+=%F     <ENTER>

1
यह उसी तरह का उत्तर है जैसे उसी प्रश्न पर थमेरा द्वारा किया गया
statox


1

आप शीर्षक बार में आपके द्वारा संपादित की जा रही फ़ाइल का पूरा पथ दिखा सकते हैं, जो कि मेरी राय में फ़ाइल पथ दिखाने का एक सुविधाजनक तरीका है।

ऐसा करने के लिए है, तो आप स्थापित करने की आवश्यकता titleविकल्प और titlestring। वर्तमान में मैं निम्नलिखित सेटिंग्स का उपयोग कर रहा हूं:

set title
set titlestring=%{hostname()}\ \ %F\ \ %{strftime('%Y-%m-%d\ %H:%M',getftime(expand('%')))}

यह विम का होस्टनाम दिखाएगा, फिर फ़ाइल का पूरा पथ और उसके बाद फ़ाइल का अंतिम संशोधित समय। डेमो के लिए नीचे दिया गया आंकड़ा देखें

यहां छवि विवरण दर्ज करें

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