मैंने सभी समाधान आजमाए हैं मेरे लिए वर्तमान (2018) मैकविम (8.1) या नियोविम (0.3.1) में काम कर रहा है। चूंकि मेरा प्रश्न वहां से हटाया जा रहा है, इसलिए मैंने एक नए प्रश्न में पूछने का फैसला किया।
क्या 7 साल पहले अंतिम उत्तर के बाद से विम में कुछ बदल गया है? ये सभी समाधान मुझे वर्तमान फ़ाइल का स्थान दे रहे हैं, न कि स्क्रिप्ट का स्थान। क्या स्पेसविम प्रभावित कर रहा है कि ये कार्य कैसे काम करते हैं?
यह वह कोड है जिसे मैं ठीक करने का प्रयास कर रहा हूं:
function! TeaCodeExpand()
<<some code>>
echom fnamemodify(resolve(expand('<sfile>:p')), ':h')
<<other code>>
endfunction
मेरे पास पथ दिखाने के लिए एक इकोम है जो वर्तमान स्क्रिप्ट फ़ाइल होनी चाहिए, लेकिन यह हमेशा वर्तमान में संपादित फ़ाइल लौटाती है। अगली पंक्ति vimscript फ़ाइल के ऊपर निर्देशिका में AppleScript निष्पादित करना है। मैं पथ को हार्ड कोड कर सकता हूं और सब कुछ ठीक काम करता है। लेकिन, मैं इसे वैसे ही काम नहीं कर सकता। पूरा कोड यहाँ है: github.com/raguay/TeaCode-Vim-Extension
1 उत्तर
<sfile>
को प्लग इन के फाइलस्पेक में विस्तारित करने के लिए, विस्तार स्क्रिप्ट के स्रोत होने पर होना चाहिए। देखें :help :<sfile>
:
<sfile> When executing a ":source" command, is replaced with the file name of the sourced file. When executing a function, is replaced with: "function {function-name}[{lnum}]"
यदि आपको बाद में किसी फ़ंक्शन में फ़ाइलस्पेक की आवश्यकता है, तो आपको इसे एक (स्क्रिप्ट-स्थानीय) चर में संग्रहीत करने की आवश्यकता है, और संदर्भ से फ़ंक्शन से:
let s:scriptPath = fnamemodify(resolve(expand('<sfile>:p')), ':h')
function! TeaCodeExpand()
<<some code>>
echom s:scriptPath
<<other code>>
endfunction
संबंधित सवाल
जुड़े हुए प्रश्न
नए सवाल
vim
विम एक स्वतंत्र और ओपन-सोर्स मोडल टेक्स्ट एडिटर है जो अधिकांश प्रमुख प्लेटफार्मों के लिए उपलब्ध है। यह कई पाठ संपादन कार्यों में उच्च दक्षता की अनुमति देता है, लेकिन इसमें सीखने की अवस्था काफी है। मूल बातें सीखने के लिए, ": vimtutor मदद करें"। गैर-प्रोग्रामिंग प्रश्नों के लिए कृपया इसके बजाय https://vi.stackexchange.com/ का उपयोग करें।