क्या विम का डिफ़ॉल्ट 'पथ' विकल्प बेमानी है?


10

विम के मदद दस्तावेज से (देखें:) :help 'path':

'पथ' स्ट्रिंग (यूनिक्स पर डिफ़ॉल्ट: " .,/usr/include,,")

वर्तमान फ़ाइल की निर्देशिका के सापेक्ष खोज करें, उपयोग करें:

:set path=.

वर्तमान निर्देशिका में -To खोज दो कॉमा के बीच एक खाली स्ट्रिंग का उपयोग करें:

:set path=,,

ऐसा लगता है कि .और ,,'पथ' विकल्प में कोई अंतर नहीं है। वे दोनों वर्तमान निर्देशिका का मतलब है।

मुझे समझ नहीं आ रहा है कि हमें दोनों .और ,,पथ विकल्प की आवश्यकता क्यों है। बीच क्या अंतर है :set path=.और :set path=,,?

जवाबों:


14

"वर्तमान निर्देशिका" और "वर्तमान फ़ाइल की निर्देशिका" दो अलग-अलग चीजें हैं।

"वर्तमान निर्देशिका" डिफ़ॉल्ट रूप से वह निर्देशिका है जिसमें आपने विम शुरू किया है। आप विम से पूछें कि वह क्या है :pwdऔर विकल्प सेट करके :cdया उसके साथ इसे बदल दें । यदि आप इसे कभी नहीं बदलते हैं, तो यह तब तक रहेगा जब तक आप वर्तमान सत्र बंद नहीं करते।:lcdautochdir

"वर्तमान फ़ाइल की निर्देशिका" वास्तव में यही दावा करती है। यदि वर्तमान फ़ाइल "वर्तमान निर्देशिका" में है, तो दोनों का मान समान है। यदि वर्तमान फ़ाइल किसी अन्य निर्देशिका में है, तो उनके अलग-अलग मान हैं।

के लिए pathउपयोगी होने के लिए, इसके साथ उन दो परिदृश्यों को संबोधित करने के लिए आवश्यक है .और ,,

उदाहरण:

$ cd /foo/bar/baz
$ vim filename
:pwd                   -->  /foo/bar/baz
:echo expand("%:p:h")  -->  /foo/bar/baz
:e ../file
:pwd                   -->  /foo/bar/baz
:echo expand("%:p:h")  -->  /foo/bar

7

वर्तमान फ़ाइल की निर्देशिका और वर्तमान निर्देशिका दो पूरी तरह अलग बातें (है कि हो सकता है, इस अवसर पर, एक ही मूल्य है) कर रहे हैं।

विचार करें:

cd /tmp; vim /etc/bash.bashrc

जब तक मेरे पास autochdir(या कुछ समान) सेट है, तब तक वर्तमान निर्देशिका है /tmp, फिर भी वर्तमान फ़ाइल की निर्देशिका है /etc

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