2012-09-29 19 views
15

मैं cygwin से gvim चलाने में सक्षम नहीं हूँ। जब मैं के साथ एक नई फ़ाइल खोलने का प्रयास: के रूप मेंसाइगविन से विंडोज़ जीवीआईएम कैसे चलाएं?

जाँचने फ़ाइल नाम जाँचने के साथ 'नहीं नाम' और प्रदर्शित करता है त्रुटि एक फ़ाइल को खोलता है:

Error detected while processing command line 
E492: Not editor command: C:\cygwin\home\chandan\l 
Press enter or type command to continue 

अधिक समस्याग्रस्त है कि मैं नहीं कर सकता पथ

>which gvim में खुला मौजूदा फ़ाइल से पता चलता /usr/bin/gvim

मैंडाल दिया हैअभी भी

उत्तर

6

इस सूत्र मिला, मैं jens अस्वीकार्य से उत्तर नहीं मिलता। हम यह नहीं कहने के लिए कह रहे हैं कि ऐसा न करें। मुझे अन्य उत्तरों पसंद नहीं आया या तो हमेशा कुछ क्विर्क था, जैसे सेटिंग्स का उपयोग नहीं किया गया था या अतिरिक्त कमांड लाइन विंडो पॉप अप हो रही थी। मैंने कुछ खुदाई की और यह मेरे लिए काम करता है। कुछ भी नहीं के लिए कोई अतिरिक्त कमांड लाइन बॉक्स नहीं है और यह मेरी उचित जीवीआईएम सेटिंग्स का उपयोग करता है।

alias gvim='HOME=/cygdrive/p/ cygstart /cygdrive/c/Program\ Files\ \(x86\)/Vim/vim74/gvim.exe' 

आपको बस घर को बदलने की जरूरत है। यह जानने के लिए कि विंडोज़ से जीवीआईएम कैसे चलाएं, फिर ": $ HOME echo" डालें और मेरे मामले में एंटर दबाएं यह पी: \ दिखाता है ताकि अनुवाद/साइग्राइव/पी/

यदि आपके gvim.exe एक अलग निर्देशिका/संस्करण में है जिसे आपको समायोजित करने की आवश्यकता होगी।

अब जब मैं एक सिग्विन कमांड प्रॉम्प्ट पर 'gvim script.sh' टाइप करता हूं तो यह फ़ाइल के साथ gvim लॉन्च करता है, सभी अच्छे और साफ!

अद्यतन

मैं यह करने के लिए एक थोड़ा बेहतर रास्ता मिल गया। उपनाम का उपयोग करने से मेरा सत्र बढ़ रहा था कि मैंने जीवीआईएम चलाया, मैं इसे "gvim &" का उपयोग करके एक अलग प्रक्रिया के रूप में लॉन्च करना चाहता था, क्योंकि यह पूरा होने पर "पूर्ण" लाइन लॉन्च और प्रदर्शित करते समय नौकरी संख्या सूचीबद्ध करता है। मैं बहुत उग्र हूं इसलिए मुझे पता चला कि एक समारोह का उपयोग करके यह सब साफ कैसे प्राप्त करें।

बस इसे अपनी .bash_functions फ़ाइल में जोड़ें, यह होम निर्देशिका और बैकस्लैश उपयोग के संबंध में पिछले अनुभाग पर बनाता है।

gvim() { 
    ORIGHOME=$HOME 
    HOME=/cygdrive/p/ 
    /cygdrive/c/Program\ Files\ \(x86\)/Vim/vim74/gvim.exe $1 & disown 
    HOME=$ORIGHOME 
} 2>/dev/null 

अद्यतन 2 babun उपयोगकर्ताओं के लिए!

इस मूल रूप से मैं मूल cygwin जो एक पूर्ण आभासी उड़ा बिना खिड़कियों में उन लोगों के लिए इच्छुक linux कार्यक्षमता के लिए एक कम परेशानी सेटअप हो रहा है babun के पक्ष में स्थापित खत्म समाप्त हो गया है के साथ लड़ा होने के बाद से ठीक है। बेशक मेरी जीवीआईएम लॉन्च स्क्रिप्ट तोड़ दी, और मुझे अपनी .zshrc फ़ाइल में निम्नलिखित करना पड़ा (बाबून ज़श का उपयोग करता है, पहले मैंने विरोध किया और इसे बाश करने के लिए स्विच किया लेकिन फिर मुझे लगा कि उनके पास तर्क होना चाहिए, और उन्होंने किया, मैं ऐसा लगता है जैसे)

gvim() { 
    OLD_HOME=$HOME 
    OLD_VIMRUNTIME=$VIMRUNTIME 
    export HOME=/cygdrive/c/Users/gmitchell/ 
    export VIMRUNTIME="C:\Program Files (x86)\VIM\vim74" 
    TARGET=$(cygpath -w $1) 
    (/cygdrive/c/Program\ Files\ \(x86\)/Vim/vim74/gvim.exe $TARGET &) 
    export HOME=$OLD_HOME 
    export VIMRUNTIME=$OLD_VIMRUNTIME 
} 

* नोट: आसपास के घुमावदार कोष्ठकों() अपने स्वच्छ खोल अप खिलवाड़ से कार्य आईडी बंद हो जाता है, और आप नहीं रह गया है "त्याग देते"

पी एस की जरूरत है अब इसके साथ एकमात्र शेष परेशानी यह है कि जब तक आप लॉन्च किए गए सभी जीवीआईएम उदाहरण बंद नहीं होते हैं तब तक आप बाबुन खोल से बाहर निकल नहीं सकते हैं। शायद कोई खुद को समझ सकता है। मैंने कोशिश की। जब आप बाहर निकलते हैं तो यह तब तक लटकता है जब तक कि आप सभी gvims से बाहर नहीं निकल जाते।

+0

आपकी परेशानी के लिए धन्यवाद! यह वैसे ही काम करता है जैसा मैं चाहता हूं, एक दोष के साथ: घर छोड़ दिया गया है जिस तरह से gvim चाहता है, जिस तरह से मेरा साइगविन खोल चाहता है। इसके अलावा, मुझे लगता है कि सी: \ पी के लिए, आप '/ cygdrive/c/p' का उपयोग करना चाहते हैं। – jspencer

+0

आप सही हैं कि यह/cygdrive/c/p होता, लेकिन जब मैंने टाइप किया, तो मैंने गड़बड़ कर दिया, यह पी: \ दिखा रहा था क्योंकि मेरे विंडोज होमएडर एक पी ड्राइव पर सेट हो जाता है। मैंने साइगविन बनाम जीवीआईएम होम सेटिंग्स के साथ यह मुद्दा नहीं देखा था, मैंने अभी कोशिश की है और आप सही हैं, यह मेरे सिग्विन खोल को $ HOME के ​​साथ छोड़ देता है, मैं कमांड के माध्यम से मूल $ HOME ले जाने के लिए अपनी स्क्रिप्ट को ठीक कर दूंगा। – low351

+0

@jspencer, बस ध्यान दिया कि आपने एक फिक्स पोस्ट किया है, ठीक है। मेरे जैसे उग्र होने के लिए धन्यवाद :) मैं आपके संस्करण का उपयोग कर रहा हूँ ... – low351

9

अपने आप को एक पक्ष बनाओ, साइगविन से विंडोज़ जीवीआईएम चलाने की कोशिश न करें। पर्यावरण चर के सेट की संभावना पूरी तरह से अलग है, और बैकस्लैश निर्देशिका विभाजक का दर्द, फ़ाइल नामों में रिक्त स्थान, समझने में असमर्थता/साइगविन पथ यह व्यर्थता में एक अभ्यास बनाता है।

फिर, क्या? Gvim के सिगविन संस्करण को स्थापित करें और इन सभी समस्याओं के बारे में भूल जाओ।

+0

धन्यवाद जेन्स। स्टार्टक्सविन के बाद मैं नई विंडो में gvim के साथ फाइलें खोलने में सक्षम हूं। लेकिन .gvimrc फ़ाइल जो मेरी होम निर्देशिका में है पहचान नहीं है। कृपया बताएं कि कैसे करें। –

+0

शायद आप और gvim असहमत हैं कि आपकी निर्देशिका निर्देशिका कौन सी निर्देशिका है। क्या 'gvim -u .gvimrc' काम करता है? – Jens

+0

हाँ gvim -u .gvimrc.vim फ़ाइल नाम फ़ाइल नाम बैकग्राउड अंधेरे के साथ एक फ़ाइल खोलता है।लेकिन अब ल्यूक के पेज में दिए गए उपनाम को सेट करने के बाद सिंटैक्स प्लगइन्स के साथ काम कर रहा है जिसे मैंने पहले इंस्टॉल किया था, इसलिए मैं इसे पसंद करता हूं। –

7

मैंने इस एकमात्र उद्देश्य के लिए cyg-wrapper.sh लिखा था।

यह समर्थन करता है:

  • सांकेतिक लिंक
  • विकल्पों pathnames के रूप में व्याख्या नहीं होना चाहिए (जाँचने के साथ -c हैं या नहीं अथवा झंडे ऋण चिह्न के साथ शुरू)।

    gvim /etc/profile -c /PS1 -c "echo 'correctly opened'" 
    # or even: 
        cd ~/tmp ; ln -s ~/bin/cyg-wrapper.sh 
        gvim -d http://hermitte.free.fr/cygwin/cyg-wrapper.sh cyg-wrapper.sh 
    
        explorer -e 
        explorer "$vim" 
        explorer http://hermitte.free.fr/ 
    

    नोट::

दूसरे शब्दों में, इसे टाइप करने में सक्षम बनाता मैं अपने .profile में निम्नलिखित कार्य का उपयोग cyg-wrapper.sh

gvim() { 
    opt='' 
    if [ `expr "$*" : '.*tex\>'` -gt 0 ] ; then 
    opt='--servername LATEX ' 
    fi 
    cyg-wrapper.sh "C:/Progra~1/Edition/vim/vim73/gvim.exe" --binary-opt=-c,--cmd,-T,-t,--servername,--remote-send,--remote-expr --cyg-verbose --fork=2 $opt "[email protected]" 
} 

साथ जाँचने को चलाने के लिए

संपादित करें: वर्तमान में (26 सितंबर 2014, विम 7.4 का उपयोग करके), विंडोज जीवीआईएम कमांड लिन से जीवीआईएम लॉन्च करने के लिए C:\Windows\gvim.bat का उपयोग करता है ई। इस स्क्रिप्ट के साथ gvim() फ़ंक्शन में gvim.exe पथ को प्रतिस्थापित करने से वर्तमान Vim संस्करण से मिलान करने के लिए पथ बदलने के बिना gvim लॉन्च करने की अनुमति मिलती है (जो वास्तव में Progra~2 में हो सकता है); हालांकि, ऐसा लगता है कि यह एक अनावश्यक cmd.exe विंडो भी खोलता है।

+0

बहुत बहुत धन्यवाद Luc .. यह अंततः –

+0

काम किया यह बहुत ही बढ़िया है। धन्यवाद। –

3

मैं तो, मैं साधारण इस

alias gvim='cmd /c "set SHELL=cmd & start gvim"'

यह मेरे लिए काम करता है की तरह कर $ शेल वर

की वजह से एक ही समस्या है, यह आप भी मदद की जाएगी हो सकता है।

और शायद आप विम के लिए एक ही उपनाम का उपयोग करना चाहते हैं।

2

मैं अपने .bashrc में निम्नलिखित समारोह डाल:

function gvim 
{ 
    GVIM_CMD=/cygdrive/c/path/to/gVimPortable.exe 
    if [[ -z "$1" ]] 
    then 
     $GVIM_CMD 
    else 
     $GVIM_CMD `cygpath -w $1` 
    fi 
} 

यह मैं कहीं से भी जाँचने शुरू करने के लिए अनुमति देता है।

यह रिक्त स्थान के साथ, भी फ़ाइलों के लिए ठीक काम करता है ...

+0

यह ध्यान देने योग्य है कि मैं इसे काम करने के लिए एकमात्र तरीका शॉर्ट फॉर्म विंडोज पथ (/ cygdrive/c/PROGRA ~ 2/Vim/vim74 के बजाय/cygdrive/c/program \ files \ \ (x86 \) के साथ था/विम/vim74)। आप अपने सिस्टम के लिए सही पथ प्राप्त करने के लिए साइगपाथ का उपयोग कर सकते हैं: $ cygpath -d/cygdrive/c/प्रोग्राम \ फ़ाइलें \ \ (x86 \)/Vim/vim74/ – roguenet

0

मैं सिर्फ gvim.bat जो gvim करने के लिए मानक Win32 vim स्थापना के साथ आता है और यह/usr/bin में डाल दिया।

मैं भी Win32 जाँचने और Cygwin विम beetween सेटिंग्स इस लेख की चर्चा करते हुए साझा कर रहा हूँ:

http://vim.wikia.com/wiki/Synchronize_configuration_to_many_computers

इस तरह मैं दोनों विम और Win32 जाँचने ही प्लगइन्स और सेटिंग्स के साथ चल सकते हैं।

0

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

मैं gvim के रूप में यह बचाया में ~/ड्रॉपबॉक्स/bin/cygwin/(जो मेरे पथ में है)

#!/usr/bin/env ruby 

args='' 
filepath='' 
arg=ARGV[0] 

if arg 
    if File.exist? arg 
     if File.file? arg 
      args+="--remote-tab-silent " 
     end 
     filepath=`cygpath -w '#{arg}'`.strip 
     filepath="'#{filepath}'" 
    end 
else 
end 


exe="'/c/Program\ Files\ \(x86\)/vim/vim73/gvim.exe' #{args} #{filepath}" 
spawn exe 
4

यहाँ तुम सब करने की जरूरत है:

alias gvim="run.exe /cygdrive/c/Programming/Tools/Vim/vim74/gvim.exe" 

वर्क्स भी साथ Notepad ++, इसलिए जैसे:

alias np="run.exe /cygdrive/c/Programming/Tools/Notepad++/notepad++.exe" 
+0

ऐसा लगता है, लेकिन मेरे लिए यह लोड नहीं होता है _vimrc मेरी विंडोज़ होम निर्देशिका में ठीक से। यह मेरे सिग्विन होम निर्देशिका में .vimrc लोड नहीं करता है। –

0

यहां लिपि है जिसका उपयोग मैं ~/bin/gvim के लिए करता हूं। यह इसे चलाता है जैसे कि मैंने "रन" संवाद से gvim FOO कहा (explorer.exe द्वारा बैच फ़ाइल के लिए धन्यवाद)। कमांड लाइन के साथ बहुत अच्छी तरह से खेल नहीं सकते हैं, लेकिन एक स्व-हटाने वाली बैच फ़ाइल बचाव के लिए आती है।

#!/bin/bash 

TEMPFILE_NAME=gvim-`date +%s`-${RANDOM}.bat 
TEMPFILE=$TMP/$TEMPFILE_NAME 
TEMPFILE_W=`cygpath --windows --absolute --long-name "$TEMPFILE"` 
TARGET= 

if [ "$1" = "" ] ; then 
    TARGET=`cygpath --windows --absolute --long-name "."` 
else 
    TARGET=`cygpath --windows --absolute --long-name "[email protected]" | tr '\n' ' '` 
fi 

WIN_GVIM=`where gvim.exe | tr -d '\r\n'` 
WIN_GVIM=`cygpath "$WIN_GVIM" --windows --absolute --long-name` 

unix2dos > $TEMPFILE << EOF 
start "gvim" "$WIN_GVIM" $TARGET 
DEL %~f0 
EOF 
chmod +x $TEMPFILE 

explorer.exe "$TEMPFILE_W" 

explorer.exe तकनीक के लिए this answer को विशेष धन्यवाद।

1

यह low351 के उत्तर पर ले गया है। मैं सिग्विन टर्मिनल में होम बदलने से नाखुश था, क्योंकि मैं स्थानीय रूप से साइगविन होम के लिए इसका उपयोग करता हूं, न कि मेरे विंडोज़ घर। लेकिन जीवीआईएम विंडोज होम का उपयोग कर सभी सेटअप है। मैंने इसे अपने .zshrc में जोड़ा:

# run windows gvim from command line 
gvim() { 
    local OLD_HOME=$HOME 
    HOME=/cygdrive/c/Users/jason/ 
    local TARGET=$(cygpath -w $1) 
    /cygdrive/c/Program\ Files\ \(x86\)/Vim/vim74/gvim.exe $TARGET & disown 
    HOME=$OLD_HOME 
} 2>/dev/null 

वास्तव में, बस घर संग्रह और पुनर्स्थापित करना। स्थानीय होने के नाते, जब समारोह वापस आता है तो OLD_HOME चला जाता है, इसलिए यह पर्यावरण को प्रदूषित नहीं करता है। यदि आप एक साइगविन फ़ाइल संपादित कर रहे हैं, तो इसे cygpath -w के माध्यम से चलाकर यह एक फ़ाइल पथ बना देगा जो विंडोज़ gvim समझता है। यह आपको विंडो पथों का उपयोग करने देता है (उदा। C:/tmp/foo.txt) लेकिन w/unix '/' विभाजक, ताकि आप /cygdrive/c के साथ बांट सकें। मुझे विश्वास है कि यह सभी संगत w/bash है। यह निम्न उत्पादन देता है:

> gvim 
[2] 5060 
> 
0

ऐसा लगता है मुख्य समस्या की तरह घर और विम चर जो cygwin पर्यावरण के लिए उपयुक्त हैं जब विंडोज जाँचने चल रहा है, समस्याओं के कारण क्योंकि Windows जाँचने cygwin के कुछ नहीं जानता निर्यात हो रहा है। यह बात ठीक करता है:

alias gvim='env -u HOME -u VIM /cygdrive/c/Program\ Files\ \(x86\)/Vim/vim74/gvim.exe' 

मैं Windows कई फ़ाइल प्रकारों के लिए (Windows में) डिफ़ॉल्ट अनुप्रयोग के रूप में स्थापित जाँचने है, तो विंडोज अक्सर open अन्य नाम के माध्यम खोला जाता जाँचने। यह तय करता है कि केस का उपयोग करें:

alias open='env -u HOME -u VIM cygstart' 
संबंधित मुद्दे