में पावरहेल के साथ मैं शक्तियों के कमांड के परिणामों को वापस करने के लिए विम में एक साधारण कार्य लिखने की कोशिश कर रहा हूं। हालांकि मैं परिणामों में अस्पष्ट हो रहा हूं।सिस्टम() vim
मैं इस एन्कोडिंग समस्या हो सकती है लगता है, लेकिन आप देखेंगे के रूप में समस्या यह बाद से अजीब बात है "काम करता है की तरह"। हालांकि मुझे समस्या का कोई समाधान नहीं है।
set shell=powershell
set shellcmdflag=-c
निम्नलिखित समारोह को देखते हुए:
निम्नलिखित गैर-डिफ़ॉल्ट खोल विकल्पों vim में सेट के साथfunction! Test()
let result = system("ls")
call setline(1, result)
endfunction
जब मैं चलाने (सी से: \ Windows):
:call Test()
निम्नलिखित मेरी बफर करने के लिए लिखा है:
+०१२३५१६४१०६१^@^@ Directory: C:\Windows^@^@^@ Mode LastWriteTime Length Name ^@-------
....continues
हालांकि जब मैं निम्नलिखित कमांड चलाएँ:
:r!ls
मैं वापस बिल्कुल मैं क्या उम्मीद करेंगे मिलता है (अर्थात ls की powershell परिणाम) इससे भी अधिक दिलचस्प है जब मैं कमांड चलाएँ:
:echo system("ls")
परिणाम देखने के लिए सही
मैं इस प्रकार अपने मूल समारोह को संशोधित करने की कोशिश की है:
function! Test()
let result = system("ls")
echo result
call setline(1, result)
endfunction
अभी तक मैं अभी भी निरर्थक शब्दों
देख मैं भी मीटर के लिए निम्न संशोधन की कोशिश की है - और बाहर echo'ed मान को उसी मैं क्या उम्मीद करेंगे है वाई समारोह:
function! Test()
let result = system("ls")
let conv = iconv(result, "utf-8", &enc)
call setline(1, conv)
endfunction
लेकिन परिणाम बिल्कुल वही हैं (यानी। उनमें^@^@ प्रतीकों और अन्य गिब्बिश शामिल हैं)
मेरा अनुमान है कि क्या हो रहा है यह है कि शक्तियों वाले cmds जिन्हें यूटीएफ -16 आउटपुट का उपयोग करके रीडायरेक्ट किया जाता है, और vim इस से निपटने में असमर्थ है।
PS> ls > test
PS> file test
test; Little-endian UTF-16 Unicode text, with CRLF, CR line terminator
मैं भी यहां बताए अनुसार $ OutputEncoding के साथ प्रयोग करना की कोशिश की है, किसी भी सफलता नहीं मिली: http://blogs.msdn.com/b/powershell/archive/2006/12/11/outputencoding-to-the-rescue.aspx
किसी को भी मैं powershell से निम्नलिखित मिल (इस मामले में फ़ाइल gnu32 कार्यक्रम है) क्या कोई विचार है कि मैं यहां क्या गलत कर रहा हूं?
क्या इस प्रश्न का उत्तर मदद करता है? http://stackoverflow.com/questions/94382/vim-with-powershell – Rynant
@Rynant मैंने पोस्ट करने से पहले उस प्रश्न को देखा, लेकिन मैं वहां वास्तव में मदद करने में कुछ भी नहीं ढूंढ पाया। मैंने नेथन हार्टले के जवाब में वर्णित cmd के माध्यम से चल रहे पावरहेल के "हैक" को आजमाया, लेकिन मैं एक ही समस्या में भाग गया। मुझे लगता है कि समस्या की जड़ यह है कि> Powerhell में पुनर्निर्देशन ऑपरेटर utf-16 में एक फ़ाइल को लिखता है। अगर मुझे एएससीआई आउटपुट करने का कोई तरीका मिल सकता है, तो मुझे लगता है कि समस्या को हल करेगा – actf
मुझे नहीं लगता कि यह आपके फ़ंक्शन में चलते समय यूनिकोड लौटा रहा है। यदि यह था, तो आप बहुत अधिक^@ अक्षर देखेंगे। इसके बजाय, मुझे लगता है कि आप जो देख रहे हैं वह कैरिज-रिटर्न कैरेक्टर (0x0d) का प्रतिनिधित्व है जो मानक विंडोज लाइन टर्मिनेटर (सीआर एलएफ) में शामिल हैं। जब आप पावरहेल में होते हैं, तो> रीडायरेक्टर वास्तव में आउट-फाइल के लिए शॉर्टेंड होता है, जो यूनिकोड के लिए डिफ़ॉल्ट होता है। परिणाम प्रदर्शित करने से पहले एक खाली स्ट्रिंग के साथ सीआर वर्ण (\ r) को बदलने का प्रयास करें। – Artomegus