2013-02-05 14 views
13

के रूप में कैसे प्राप्त करें मैं वर्तमान फ़ाइल प्रकार को vimscript में एक चर के रूप में प्राप्त करना चाहता हूं।विस्क्रिप्ट: वर्तमान फ़ाइल प्रकार को एक चर

मैं एक ऐसा फ़ंक्शन बना रहा हूं जो वर्तमान फ़ाइल प्रकार को पकड़ ले और संबंधित फ़ाइल प्रकार की दूसरी फ़ाइल संपादित करे।

उदाहरण के लिए:

  • संपादन "foo/bar.txt", खोलने के लिए "tmp/other.txt"
  • संपादन "foo/bar.cpp", खोलना चाहते हैं चाहता हूँ "tmp/other.cpp "

आदि मुझे पता है कि :set ft? प्रदर्शित करता है vim में फ़ाइल प्रकार है, लेकिन मुझे यकीन है कि यह कैसे कब्जा और फिर नई फ़ाइल स्ट्रिंग के भाग के रूप में उपयोग एक और फ़ाइल खोलने के लिए नहीं कर रहा हूँ।

+5

'और फ़ाइल प्रकार 'फ़ाइल नाम एक्सटेंशन के अनुरूप नहीं है! क्या आप वास्तव में इसके लिए फ़ाइल टाइप का उपयोग करना चाहते हैं, या आप मौजूदा फ़ाइल के एक्सटेंशन को निकालने के लिए 'bufname ("% ") 'fnamemodify (bufname ("% "),": t ") की तरह' पार्स '' का विश्लेषण करना चाहते हैं? उदाहरण के लिए, 'foo.hpp' नाम की एक फ़ाइल में cpp का '& filetype' है। क्या आप इस मामले में "tmp/other.cpp" या "tmp/other.hpp" खोलना चाहते हैं? – cptstubing06

उत्तर

24

आप इसे एम्पर्सेंड के साथ उपसर्ग करके सेटिंग के मूल्य तक पहुंच सकते हैं। एक चर करने के लिए फ़ाइल प्रकार निर्दिष्ट करने के लिए, का पालन कर रहे बराबर:

let my_filetype = &filetype 
let my_filetype = &ft 
अपने उदाहरण के लिए

तो, वर्तमान बफर के filetype यह सोचते हैं स्थापित किया गया है, तो आप की तरह

execute 'edit tmp/other.' . &filetype 

नोट कुछ कर सकते हैं कि आपको अभिव्यक्ति execute अभिव्यक्ति की आवश्यकता है ताकि तारों को समेकित करने से पहले चर का विस्तार किया जा सके।

0

फ़ाइल प्रकार और फ़ाइल प्रत्यय आवश्यक नहीं है। उदाहरण के लिए, यदि आप एक .txt फ़ाइल संपादित कर रहे हैं, तो zft = & ft सेट zft को "text" दें। zfs = fnamemodify (bufname ("%"), ": e") zfs को "txt" पर सेट करें।

संबंधित मुद्दे