मैं विंडोज पर गिट के साथ काम करने के लिए एक संपादक कैसे स्थापित कर सकता हूं?


561

मैं कोशिश कर रहा हूँ विंडोज पर Git की । मुझे "कमिट" करने की कोशिश करने की बात मिली और मुझे यह त्रुटि मिली:

टर्मिनल गूंगा है और न ही कोई विज़ुअल और न ही EDITOR परिभाषित है। कृपया -m या -F विकल्प का उपयोग करके संदेश की आपूर्ति करें।

इसलिए मुझे लगा कि मुझे EDITOR नामक एक पर्यावरण चर की आवश्यकता है। कोई दिक्कत नहीं है। मैंने इसे नोटपैड की ओर इशारा किया। यह काम किया, लगभग। डिफ़ॉल्ट प्रतिबद्ध संदेश नोटपैड में खुलता है। लेकिन नोटपैड नंगे लाइन फीड का समर्थन नहीं करता है। मैं बाहर गया और नोटपैड ++ मिला , लेकिन मैं यह पता नहीं लगा सकता कि नोटपैड ++ को इस %EDITOR%तरह से कैसे सेट किया जाए कि यह जीआईटी के साथ उम्मीद के मुताबिक काम करे।

मैंने नोटपैड ++ से शादी नहीं की है। इस बिंदु पर मुझे कोई आपत्ति नहीं है कि मैं किस संपादक का उपयोग करता हूं। मैं बस सक्षम होना चाहता हूं कमांड लाइन (साथ -m) के बजाय एक संपादक में प्रतिबद्ध संदेश टाइप करने में

Windows पर Git का उपयोग करने वाले आप: अपने प्रतिबद्ध संदेशों को संपादित करने के लिए आप किस टूल का उपयोग करते हैं, और इसे काम करने के लिए आपको क्या करना होगा?


7
TLDR: संपादक के लिए पथ के चारों ओर एकल उद्धरण रखे
yoyo

शायद सहायक नहीं, लेकिन एफडब्ल्यूआईडब्ल्यू, मैं सिर्फ नियमित नोटपैड का उपयोग करता हूं। मैंने इसे काम करने के लिए कुछ नहीं किया। यह सिर्फ डिफ़ॉल्ट रूप से बॉक्स से बाहर काम किया ...
BrainSlugs83

11
अपडेट सितंबर 2015: एक सरल git config core.editor notepadअब पर्याप्त है। देखें नीचे मेरी अद्यतन जवाब
वॉन सी पी

बस एक त्वरित ध्यान दें कि जेइटिट गिट के लिए एक उपयुक्त संपादक नहीं है। JEdit केवल कई फ़ाइलों के लिए एक उदाहरण खोलता है। यदि यह पहले से ही खुला था, तो git इसे एक नई फ़ाइल खोलने का कारण बनेगा, लेकिन फिर आपको git को जारी रखने से पहले पूरी तरह से JEdit को बंद करना होगा। JEdit को प्रतिबद्ध संदेश को संपादित करने के लिए एक अलग उदाहरण खोलने के लिए कोई कमांड लाइन विकल्प नहीं है।
ग्रांट रॉबर्टसन

यदि कोई व्यक्ति उदात्त पाठ 3 को प्यार करता है, तो यहां मेरे निर्देश हैं कि मैंने इसे विंडोज के लिए कैसे कॉन्फ़िगर किया ... और लिनक्स भी: आपके गिट संपादक (विंडोज और लिनक्स निर्देश) के रूप में उदात्त पाठ 3 के लिए सर्वश्रेष्ठ सेटिंग्स । @yoyo, किसी भी पाठ संपादक का उपयोग करने के लिए TLDR: संपादक निष्पादन योग्य के लिए पथ के चारों ओर एकल उद्धरण रखें और Windows निष्पादन योग्य पथ नाम में आगे के स्लैश (/) नहीं वापस स्लैश (\) का उपयोग करें।
गेब्रियल स्टेपल्स

जवाबों:


562

अपडेट सितंबर 2015 (6 साल बाद)

Git-for-Windows (2.5.3) की अंतिम रिलीज़ में अब शामिल हैं:

कॉन्फ़िगर करके git config core.editor notepad, उपयोगकर्ता अब notepad.exeअपने डिफ़ॉल्ट संपादक के रूप में उपयोग कर सकते हैं
कॉन्फ़िगरेशन git config format.commitMessageColumns 72को नोटपैड रैपर द्वारा उठाया जाएगा और उपयोगकर्ता द्वारा संपादित करने के बाद प्रतिबद्ध संदेश को लाइन-रैप किया जाएगा।

जोहान्स शिंडलिन द्वारा प्रतिबद्ध 69b301b देखें ( dscho)

और Git 2.16 (Q1 2018) उपयोगकर्ता को यह बताने के लिए एक संदेश दिखाएगा कि वह संपादक का संपादन करते समय संपादन समाप्त होने की प्रतीक्षा कर रहा है, अगर संपादक किसी छिपी हुई खिड़की या कहीं अस्पष्ट तरीके से खुलता है और उपयोगकर्ता खो जाता है।

देखें abfb04d प्रतिबद्ध (07 दिसंबर 2017), और a64f213 प्रतिबद्ध (29 नवंबर 2017) द्वारा लार्स श्नाइडर ( larsxschneider)
हेल्प-बाय: जूनियो सी हमानो ( gitster)
( जूनियो सी gitsterहमानो द्वारा विलय - - में 0c69a13 , 19 दिसंबर 2017)

launch_editor(): इंगित करें कि Git उपयोगकर्ता इनपुट के लिए प्रतीक्षा करता है

जब एक ग्राफिकल GIT_EDITORएक Git कमांड द्वारा खोला जाता है जो उपयोगकर्ता इनपुट के लिए खुलता है और प्रतीक्षा करता है (उदाहरण के लिए " git rebase -i"), तो संपादक विंडो को अन्य विंडो द्वारा अस्पष्ट किया जा सकता है।
उपयोगकर्ता को मूल Git टर्मिनल विंडो पर बिना देखे भी छोड़ा जा सकता है, जिसमें यह पता चलता है कि Git के आगे बढ़ने से पहले उसे किसी अन्य विंडो के साथ सहभागिता करने की आवश्यकता है। इस उपयोगकर्ता के लिए Git लटका हुआ दिखाई देता है।

एक संदेश प्रिंट करें जो Git मूल टर्मिनल में संपादक इनपुट की प्रतीक्षा कर रहा है और संपादक के वापस आने पर इसे हटा दें, यदि टर्मिनल अंतिम पंक्ति को मिटाने का समर्थन करता है


मूल उत्तर

मैंने इसे git संस्करण 1.6.2.msysgit.0.186.gf7512 और नोटपैड ++ 5.3.1 के साथ परीक्षण किया

मैं एक एडिटर वेरिएबल सेट नहीं करना चाहता, इसलिए मैंने कोशिश की:

git config --global core.editor "\"c:\Program Files\Notepad++\notepad++.exe\""
# or
git config --global core.editor "\"c:\Program Files\Notepad++\notepad++.exe\" %*"

वह हमेशा देता है:

C:\prog\git>git config --global --edit
"c:\Program Files\Notepad++\notepad++.exe" %*: c:\Program Files\Notepad++\notepad++.exe: command not found
error: There was a problem with the editor '"c:\Program Files\Notepad++\notepad++.exe" %*'.

अगर मैं npp.bat को परिभाषित करता हूं:

"c:\Program Files\Notepad++\notepad++.exe" %*

और मैं टाइप करता हूं:

C:\prog\git>git config --global core.editor C:\prog\git\npp.bat

यह सिर्फ डॉस सत्र से काम करता है, लेकिन गिट शेल से नहीं
(ऐसा नहीं है कि core.editor कॉन्फ़िगरेशन तंत्र के साथ, इसमें " start /WAIT..." के साथ एक स्क्रिप्ट काम नहीं करेगी, लेकिन केवल एक नया DOS फ़ाइल खोलें)


बेनेट के उत्तर में स्क्रिप्ट जोड़ने से बचने की संभावना का उल्लेख है, लेकिन सीधे सरल उद्धरणों के बीच कार्यक्रम को सीधे संदर्भित करने के लिए । नोट स्लैश की दिशा! पथ नाम में अलग फ़ोल्डर का उपयोग /न करें \!

git config --global core.editor \
"'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

या यदि आप 64 बिट सिस्टम में हैं:

git config --global core.editor \
"'C:/Program Files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

लेकिन मैं एक स्क्रिप्ट का उपयोग करना पसंद करता हूं (नीचे देखें): इस तरह से मैं फिर से पंजीकरण के बिना विभिन्न रास्तों या विभिन्न विकल्पों के साथ खेल सकता हूं git config


वास्तविक समाधान (एक स्क्रिप्ट के साथ) यह महसूस करने के लिए था कि:
आप जो कॉन्फिगर फाइल में संदर्भित करते हैं, वह वास्तव में एक शेल ( /bin/sh) स्क्रिप्ट है , डॉस स्क्रिप्ट नहीं।

तो क्या काम करता है:

C:\prog\git>git config --global core.editor C:/prog/git/npp.bat

साथ C:/prog/git/npp.bat:

#!/bin/sh
"c:/Program Files/Notepad++/notepad++.exe" -multiInst "$*"

या

#!/bin/sh
"c:/Program Files/Notepad++/notepad++.exe" -multiInst -notabbar -nosession -noPlugin "$*"

उस सेटिंग के साथ, मैं git config --global --editडॉस या गिट शेल git rebase -i ...से ' ' कर सकता हूं, या मैं डॉस या गिट शैल से ' ' कर सकता हूं ।
बॉट कमांड नोटपैड ++ (इसलिए -multiInst'विकल्प) की एक नई आवृत्ति को ट्रिगर करेगा , और जाने से पहले उस उदाहरण के बंद होने की प्रतीक्षा करें।

ध्यान दें कि मैं केवल '/' का उपयोग करता हूं, न कि \'। और मैंने विकल्प 2 का उपयोग करके msysgit स्थापित किया। ( पर्यावरण चर में git\binनिर्देशिका जोड़ें PATH, लेकिन कुछ अंतर्निहित विंडोज़ टूल के बिना ओवरराइड करें)

तथ्य यह है कि नोटपैड ++ आवरण को कहा जाता है ।bat महत्वपूर्ण नहीं है।
इसे 'npp.sh' नाम देना और इसे [git]\cmdनिर्देशिका में रखना बेहतर होगा, हालांकि (या आपके PATH पर्यावरण चर द्वारा संदर्भित किसी भी निर्देशिका में)।


यह सभी देखें:


lightfire228 टिप्पणियों में जोड़ता है :

किसी भी समस्या के लिए जहां N ++ केवल एक खाली फ़ाइल खोलता है, और git आपका प्रतिबद्ध संदेश नहीं लेता है, " खाली संदेश के कारण प्रतिबद्ध घृणा " देखें : कहने के लिए अपनी .batया .shफ़ाइल बदलें :

"<path-to-n++" .git/COMMIT_EDITMSG -<arguments>. 

यह नोटपैड ++ को टेम्पर कमिट फ़ाइल खोलने के लिए कहेगा, बजाय एक रिक्त नए के।


आपके शेल स्क्रिप्ट में, आपको $ * के आसपास दोहरे उद्धरण चिह्नों की आवश्यकता होती है, अन्यथा यह उनमें रिक्त स्थान वाले रास्तों के लिए ठीक से काम नहीं करेगा। पूरी तरह से स्पष्टीकरण के लिए धन्यवाद - मैं प्रोग्रामर्स की शुरुआत के लिए विंडोज पर गिट (और अन्य सामान का एक गुच्छा) स्थापित कर रहा हूं, और कमांड लाइन उन्हें कठिन बनाने के लिए पर्याप्त है बिना उन्हें वीआई कमांड सीखे।
सारा मेई

एक और ठोस उदाहरण: stackoverflow.com/questions/1634161/…
VONC

1
बेनेट के जवाब के बाद आपको एक स्क्रिप्ट बनाने की ज़रूरत नहीं है, आप बस उद्धरणों के अंदर '' एपोस्ट्रोपी का उपयोग कर सकते हैं। ''
टोबियास किंजलर

@ टोबियास: सच है, मैंने उसका जवाब खान में शामिल किया है, साथ ही इस कारण से कि मैं अभी भी अपनी git configसेटिंग्स में स्क्रिप्ट का संदर्भ लेना पसंद करता हूं ।
वॉनसी

6
@NateGlenn छोटे dir /Xसमतुल्य का उपयोग करें : "" PROGRA~2"के लिए" Program Files (x86), जो कि विंडोज पर क्रॉस-प्लेटफॉर्म संगत टूल का उपयोग करते समय प्राप्त करने के लिए एक अच्छी आदत है, जो आपको व्हाट्सएप को स्क्वैश करने की अनुमति देता है।
जेजे ज़बकर

300

डैरेन के उत्तर पर बिल्डिंग , नोटपैड ++ का उपयोग करने के लिए आप बस यह कर सकते हैं (सभी एक पंक्ति पर):

git config --global core.editor "'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

जाहिर है, C:/Program Files/Notepad++/notepad++.exeभाग आपके सिस्टम पर नोटपैड ++ निष्पादन योग्य के लिए पथ होना चाहिए। उदाहरण के लिए, यह हो सकता है C:/Program Files (x86)/Notepad++/notepad++.exe

यह मेरे लिए एक आकर्षण की तरह काम करता है।


10
मैं भी! BTW, उन स्विचों को C: / Program Files / Notepad ++ / user.manual / प्रलेखन / नोटपैड-उपयोगकर्ता-मैनुअल / कमांड-लाइन.html पर समझाया गया है
एंड्रयू स्वान

23
नोटपैड ++ के लिए देखें `C: \ Program Files (x86)` में स्थित है
mindless.panda

8
X64 Windows परिवर्तन के लिए: git config --global core.editor "'C: / Program Files (x86) / Notepad ++ / notepad ++। Exe' -multiInst -notabbar -nosession -noPlugin
Dariusz

4
मुझे पता है कि मुझे इस पार्टी में देर हो रही है, लेकिन जिज्ञासा से बाहर, क्या किसी को पता है (या यहां तक ​​कि याद है, इन सभी वर्षों के बाद) कोई "-नोटबार" क्यों निर्दिष्ट करेगा? मैं अन्य मापदंडों के पीछे तर्क को समझता हूं (अच्छी तरह से, यह सुनिश्चित नहीं है कि "-noPlugin", वास्तव में), लेकिन यह नहीं।
विल्सन एफ

11
@WilsonF इसका कारण यह है कि आप अपने इनपुट के लिए प्रतीक्षा करना बंद करने और जारी रखने के लिए नोटपैड ++ से बाहर निकलें। आप नोटपैड ++ के इस उदाहरण में अन्य टैब नहीं खोलना चाहते हैं क्योंकि तब आपका गिट सत्र जमे हुए दिखाई देगा! वे सेटिंग्स बिल्कुल सही काम करती हैं: यदि आपके पास नोटपैड ++ पहले से ही खुला है, तो आपको एक नया उदाहरण मिलता है, जो आपको अन्य फ़ाइलों को खोलने की अनुमति नहीं देता है, और जब आप संपादन कर रहे हैं, तो यह जानने के लिए कि आप को बंद करना होगा। । प्रतिबद्ध संदेशों के लिए समान काम करता है।
एरिक

50

वैसे भी, मैं बस इसके साथ खेल रहा हूं और मेरे लिए अच्छी तरह से काम करने के लिए निम्नलिखित पाया:

git config --global core.editor "'C:/Program Files/TextPad 5/TextPad.exe' -m"

मुझे नहीं लगता कि CMD सिंगल-कोट्स को पसंद करता है इसलिए आपको "स्पेस एम्बेडेड स्ट्रिंग तर्क को निर्दिष्ट करने के लिए" दोहरे उद्धरण चिह्नों का उपयोग करना चाहिए।

साइगविन (जो मेरा मानना ​​है कि गिट के बैश के लिए अंतर्निहित मंच है) दूसरी ओर दोनों को पसंद करता है 'और "; आप सीएमडी जैसे रास्तों को निर्दिष्ट कर सकते हैं, /इसके बजाय का उपयोग करते हुए \, जब तक कि स्ट्रिंग को इस उदाहरण में उद्धृत किया जाता है, एकल-उद्धरण का उपयोग करते हुए।

-mओवरराइड / कई संपादकों के उपयोग को इंगित करता है और एक के लिए कोई जरूरत नहीं है %*अंत पर हमला बोला।


एकल / दोहरे उद्धरण स्पष्टीकरण के लिए धन्यवाद, अब समझ में आता है!
पैट्रिक मैकडोनाल्ड

3
git config --global core.editor "'C:\Program Files\Sublime Text 3\sublime_text.exe' -m"मेरे लिए एक आकर्षण की तरह काम करता है।
व्लाद होलुबिएव

मैंने `git config --global code.editor '' C: \\ प्रोग्राम फाइल्स \\ उप-पाठ 3 का उपयोग किया। एक नोटपैड संपादक। इस मामले में कोई विचार क्यों? अग्रिम में धन्यवाद।
रयान चेज़

@RyanChase स्थानीय कॉन्फिगर प्रविष्टि को ./git/config से निकालेंeditor = notepad
रिकी बोयस

1
Git Bash, CyWwin नहीं, MingW64 के तहत चलता है। Cygwin का अपना Git बाइनरी है।
हंस डेरगन

27

संपादित करें: Vim 7.3 में अपडेट करने के बाद, मैं इस निष्कर्ष पर पहुंचा हूं कि ऐसा करने का सबसे साफ और आसान तरीका है:

  1. अपने पथ पर विम के मुख्य फ़ोल्डर को जोड़ें ( मेरे कंप्यूटर पर राइट क्लिक करें → गुणउन्नतपर्यावरण चर )

  2. इसे चलाओ:

    git config --global core.editor "gvim --nofork '%*'"
    

यदि आप इसे इस तरह करते हैं, तो मुझे पूरा यकीन है कि यह साइगविन के साथ भी काम करेगा।

मूल उत्तर:

विम से संबंधित उत्तरों के एक जोड़े के साथ भी, मुझे विंडोज के तहत जीवीएम के साथ काम करने में परेशानी हो रही थी (जबकि बैच फ़ाइल या% EDITOR% या Cygwin का उपयोग नहीं किया गया)।

अंत में मैं जो आया हूं वह अच्छा और साफ है, और यहां कुछ समाधान हैं:

git config --global core.editor \
"'C:/Program Files/Vim/vim72/gvim.exe' --nofork '%*'"

एक गेटा जो मुझे थोड़ी देर लगा, वो ये है कि विंडोज-स्टाइल बैकस्लैश नहीं हैं। वे सामान्य आगे की स्लैश हैं।


1
यदि विम को स्थापित किया गया है Program Files(x86), तो आपको स्पष्ट रूप से पथ बदलने की आवश्यकता है।
स्वप्निल

15

नोटपैड ++ ठीक काम करता है, हालांकि मैं नोटपैड, -m, या यहां तक ​​कि कभी-कभी अंतर्निहित "एडिट" के साथ रहना पसंद करता हूं।

नोटपैड ++ का उपयोग करके आप जिस समस्या का सामना कर रहे हैं, वह इस बात से संबंधित है कि कैसे Git संपादक को निष्पादित कर रहा है। इसका समाधान पर्यावरण चर EDITORको बैच फ़ाइल में सेट करना है, वास्तविक संपादक निष्पादन योग्य के बजाय, जो निम्न कार्य करता है:

start /WAIT "E:\PortableApps\Notepad++Portable\Notepad++Portable.exe" %*

/WAITकमांड लाइन सत्र को आवेदन से बाहर निकलने तक रोकने के लिए कहता है, इस प्रकार आप अपने दिल की सामग्री को संपादित करने में सक्षम होंगे, जबकि गिट खुशी से आपकी प्रतीक्षा कर रहा है। % * नोटपैड ++ के माध्यम से बैच फ़ाइल में सभी तर्क पास करता है।

C:\src> echo %EDITOR%
C:\tools\runeditor.bat

मुझे इसे पॉवरशेल के तहत काम करने में परेशानी हुई। इस विधि ( stackoverflow.com/questions/10564/… ) ने हालांकि ठीक काम किया।
पीटर स्टीफेंस

11

वर्डपैड !

मुझे विम का उपयोग करके खुशी हो रही है, लेकिन जब से मैं Git को उस कंपनी से मिलवाने की कोशिश कर रहा हूं जिसे मैं चाहता था कि हम सब कुछ चाहते थे, और पाया कि WordPad ठीक काम करने लगता है (अर्थात Git तब तक इंतजार करता है जब तक आप संपादन और समापन नहीं कर लेते। खिड़की)।

git config core.editor '"C:\Program Files\Windows NT\Accessories\wordpad.exe"'

यह msysgit पर गिट बैश का उपयोग कर रहा है; मैंने विंडोज कमांड प्रॉम्प्ट से कोशिश नहीं की है (यदि इससे कोई फर्क पड़ता है)।


मुझे इसकी सरलता पसंद आई, लेकिन यह मेरे लिए काम नहीं कर पाई। यहाँ मैंने कोशिश की है। मुझे निम्न त्रुटि संदेश प्राप्त होता है: त्रुटि: संपादक के साथ एक समस्या थी 'C: \ Program Files \ Windows NT \ Accessories \ wordpad.exe'।
शॉन लुटिन

3
उद्धरण गलत हैं। आपको दोहरे उद्धरण चिह्नों को बाहर रखना होगा । यही है, "" C: \ Program Files \ Windows NT \ Accessories \ wordpad.exe '' का उपयोग करें, और फिर यह काम करेगा।
शॉन लुटिन

आप बैकस्लैश (\) के बजाय फ़ॉरवर्ड स्लैश (/) से भी लाभान्वित हो सकते हैं।
क्रिस जोन्स

1
इसके अलावा, इसके लिए "git config" के बजाय "git config --global" का उपयोग करना सबसे अच्छा है। आप सबसे अधिक संभावना यह चाहते हैं कि सेटिंग आपके कार्य केंद्र पर सभी git रिपॉजिटरी में लागू हो, न कि केवल उस समय जो आप अभी कर रहे हैं।
क्रिस जोन्स

@ क्रिसजोन, इस मामले में कोई मतलब नहीं है क्योंकि "प्रोग्राम फाइल्स" के बीच एक स्थान है।
पचेरियर

9

मैं विंडोज पर साइगविन का भी उपयोग करता हूं, लेकिन जीवीएम के साथ (टर्मिनल-आधारित विम के विपरीत )।

इस काम को करने के लिए, मैंने निम्नलिखित कार्य किए हैं:

  1. एक-पंक्ति बैच फ़ाइल (नाम git_editor.bat) बनाई गई है जिसमें निम्नलिखित शामिल हैं: "C:/Program Files/Vim/vim72/gvim.exe" --nofork "%*"
  2. में रखा git_editor.batगया PATH
  3. सेट GIT_EDITOR=git_editor.bat

इस के साथ git commit, आदि सही ढंग से gVim निष्पादन योग्य होगा।

नोट 1: --noforkgVim का विकल्प यह सुनिश्चित करता है कि यह तब तक ब्लॉक होता है जब तक कि प्रतिबद्ध संदेश नहीं लिखा गया है।

नोट 2: यदि आपके पास पथ में स्थान है, तो gVim के पथ के चारों ओर उद्धरण आवश्यक है।

नोट 3: "% *" के आस-पास के कोट्स की जरूरत होती है, जब Git रिक्त स्थान के साथ एक फ़ाइल पथ से गुजरता है।


उन लोगों के लिए जो msysgit (cygwin's git नहीं) का उपयोग कर रहे हैं, मैं इसे थोड़ा सरल बनाने में सक्षम था। stackoverflow.com/questions/10564/…
निक नॉल्ससन

दूसरे विचार पर यह साइबरविन के साथ भी काम कर सकता है, मुझे पूरी तरह से यकीन नहीं है
निक नॉर्लसन

8

स्टैक ओवरफ्लो समुदाय के लिए धन्यवाद ... और थोड़ा सा शोध मैं अपने पसंदीदा संपादक, एडिटपैड प्रो को प्राप्त करने में सक्षम था, जो कि विंडोज़ एक्सपी एसपी 3 पर एमएसआईजितर 1.7.5.GIT और टोर्टोइसगिट v1.7.3.0 के साथ मुख्य संपादक के रूप में काम करता है। ..

उपरोक्त सलाह के बाद, मैंने कोड संपादक के लिए एक बैश स्क्रिप्ट का पथ जोड़ा ...

git config --global core.editor c:/msysgit/cmd/epp.sh

हालांकि, उपर्युक्त समाधानों में कई असफल प्रयासों के बाद ... मैं आखिरकार यह काम करने में सक्षम था। एडिटपैड प्रो के प्रलेखन के अनुसार, '/ newinstance' ध्वज जोड़ने से शेल को संपादक इनपुट की प्रतीक्षा करने की अनुमति मिलेगी ...

' / Newinstance ' ध्वज मेरे मामले में महत्वपूर्ण था ...

#!/bin/sh
"C:/Program Files/JGsoft/EditPadPro6/EditPadPro.exe" //newinstance "$*"

हाँ, न्यूस्टैंडेंस पैरामीटर के लिए डबल स्लैश एडिटपैड के डॉक्स में होना चाहिए। यहाँ ध्यान देने के लिए धन्यवाद!
gwideman

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

2
यदि आपके पास EditPad Pro 7 है, और आप EditPad Pro को उस प्रक्रिया से प्राप्त करना चाहते हैं जो EditPad की प्रक्रिया पर प्रतीक्षा करना चाहता है, तो आपको /waitEditPad की कमांड लाइन पर स्विच पास करना चाहिए । आप एक नई एडिटपैड विंडो को खोला जाना चाहिए या क्या मौजूदा विंडो का पुन: उपयोग किया जाना चाहिए /waitया नहीं, /newinstanceइसे नियंत्रित करने के लिए या बिना उपयोग कर सकते हैं । आपकी स्क्रिप्ट द्वारा लॉन्च की गई प्रक्रिया फ़ाइल के बंद होने की प्रतीक्षा करेगी, भले ही कोई विंडो बनाई गई हो या उसका पुन: उपयोग न किया गया हो। एडिटपैड प्रो 6 और पूर्व समर्थन नहीं करते हैं /wait
जन गोयवर्ट्स

@JanGoyvaerts ~ /waitझंडा टिप के लिए धन्यवाद सर ... :)
एडी बी

मैं ऊपर दिए गए निर्देशों का उपयोग करके मेरे लिए EditPad Lite प्राप्त करने में असमर्थ था। शायद यह इसलिए था क्योंकि मैं Git Bash या कुछ अन्य UNIX शेल के बजाय Windows टर्मिनल का उपयोग करके EditPad (Git के माध्यम से) को लागू करने की कोशिश कर रहा था। मेरे लिए जो काम किया गया था [core]वह लाइन को शामिल करने के लिए .gitconfig के अनुभाग को सीधे संपादित करना था editor = "'C:/Program Files/Just Great Software/EditPad Lite 7/EditPadLite7.exe' //wait //newinstance"
user697473

8

के लिए एटम आप कर सकते हैं

git config --global core.editor "atom --wait"

और Visual Studio कोड के लिए समान है

git config --global core.editor "code --wait"

जो आपके द्वारा करने के लिए एक एटम या विज़ुअल स्टूडियो कोड विंडो खोलेगा ,

या उदात्त पाठ के लिए :

git config --global core.editor "subl -n -w"

बहुत अधिक सरल और प्रभावी। धन्यवाद।
rom5jp

6

संपादित करें .ITconfig फ़ाइल को c: \ Users \ YourUser फ़ोल्डर में जोड़ें और जोड़ें:

[core]
editor = 'C:\\Program files\\path\\to\\editor.exe'

6

यह अधिक से अधिक मुद्दों का एक लक्षण है। विशेष रूप से आपके पास कुछ सेटिंग है TERM=dumb। अन्य चीजें जो ठीक से काम नहीं करती हैं, वे हैंless कमांड हैं जो कहती हैं कि आपके पास पूरी तरह कार्यात्मक टर्मिनल नहीं है।

ऐसा लगता है कि यह आमतौर पर आपके वैश्विक विंडोज पर्यावरण चर में किसी चीज के लिए TERM सेट होने के कारण होता है। मेरे लिए, यह समस्या तब आई जब मैंने स्ट्राबेरी पर्ल को स्थापित किया, इसके बारे में कुछ जानकारी इस समस्या के लिए msysgit बग पर है साथ-साथ कई समाधानों पर भी है।

पहला उपाय इसे अपने ~ / .bashrc में जोड़कर ठीक करना है:

export TERM=msys

आप इसे Git Bash प्रॉम्प्ट से ऐसा कर सकते हैं:

echo "export TERM=msys" >> ~/.bashrc

अन्य समाधान, जो अंततः मैंने किया है क्योंकि मैं TERM=dumbअपने पर्यावरण सेटिंग्स में जोड़ने के लिए स्ट्राबेरी पर्ल के कारणों के बारे में परवाह नहीं करता हूं, वह है जो जाने के लिए और इस टिप्पणी में निर्देशित के TERM=dumbरूप में हटा दें ।

नियंत्रण कक्ष / प्रणाली / उन्नत / पर्यावरण चर ... (या समान, आपके विंडोज के संस्करण पर निर्भर करता है) वह जगह है जहां विंडोज पर चिपचिपा पर्यावरण चर निर्धारित किए जाते हैं। डिफ़ॉल्ट रूप से, TERM सेट नहीं है। यदि TERM वहां सेट किया गया है, तो आप (या आपके द्वारा इंस्टॉल किए गए कार्यक्रमों में से एक - जैसे स्ट्राबेरी पर्ल) ने इसे सेट किया है। उस सेटिंग को हटा दें, और आपको ठीक होना चाहिए।

इसी तरह यदि आप स्ट्रॉबेरी पर्ल का उपयोग करते हैं और सीपीएएन क्लाइंट या उसके जैसे कुछ के बारे में परवाह करते हैं , तो आप TERM=dumbअकेले छोड़ सकते हैं और unset TERMअपनी ~ / .bashrc फ़ाइल में उपयोग कर सकते हैं जो ऊपर दिए गए स्पष्ट शब्द को स्थापित करने के समान प्रभाव होगा।

बेशक, अन्य सभी समाधान सही हैं जिसमें आप git config --global core.editor $MYFAVORITEEDITORयह सुनिश्चित करने के लिए उपयोग कर सकते हैं कि गिट आपके पसंदीदा संपादक का उपयोग करता है जब इसे आपके लिए लॉन्च करने की आवश्यकता होती है।


बहुत बहुत धन्यवाद! मुझे स्ट्राबेरी पर्ल के कारण यह समस्या हुई है और यह मुझे पागल कर रहा है! इसे इंगित करने के लिए thx
दिमित्री एवोन्टोमोव


4

मेरे पास पोर्टेबलगिट 1.6 ठीक काम कर रहा था, लेकिन पोर्टेबलगेट 1.7 विंडोज रिलीज में अपग्रेड करने के बाद, मुझे समस्या थी। Git कमांड में से कुछ नोटपैड ++ को खोलते हैं। ठीक ठीक एक्स, लेकिन कुछ नहीं करते हैं, विशेष रूप से गिट रीबेज अलग तरह से व्यवहार करते हैं।

समस्या यह है कि कुछ कमांड विंडोज cmd प्रक्रिया को चलाते हैं और कुछ Unix cmd प्रक्रिया का उपयोग करते हैं। मैं नोटपैड ++ संपादक को स्टार्टअप विशेषताएँ देना चाहता हूं, इसलिए मुझे एक अनुकूलित स्क्रिप्ट की आवश्यकता है। मेरा समाधान यही है।

  1. एक उपयुक्त पाठ संपादक चलाने के लिए एक स्क्रिप्ट बनाएं। स्क्रिप्ट अजीब लगती है, लेकिन यह विंडोज और यूनिक्स भिन्नता दोनों को संभालती है।

    c: /PortableGit/cmd/git-editor.bat

    #!/bin/sh
    # Open a new instance
    
    function doUnix() {
      "c:\program files\notepad++\notepad++.exe" -multiInst -nosession -notabbar $*
      exit
    }
    
    doUnix $*
    
    :WINCALL
    "c:\program files\notepad++\notepad++.exe" -multiInst -nosession -notabbar %*
    
  2. वैश्विक core.editor चर सेट करें

    स्क्रिप्ट को git / cmd फ़ोल्डर में सहेजा गया था, इसलिए यह पहले से ही gitconsole पथ में है। यह अनिवार्य है क्योंकि एक पूर्ण पथ ठीक से काम नहीं कर सकता है।

    git config --global core.editor "git-editor.bat"
    

अब मैं चला सकते हैं Git -एक प्रतिबद्ध और Git रिबेस मैं मास्टर आदेशों। यदि आपको Git Windows टूल में समस्या है, तो इसे आज़माएं।


4

मैं कई प्लेटफार्मों पर Git का उपयोग करता हूं, और मुझे उन सभी पर समान Git सेटिंग्स का उपयोग करना पसंद है। (वास्तव में, मेरे पास Git के साथ रिलीज कंट्रोल के तहत मेरी सभी कॉन्फ़िगरेशन फाइलें हैं, और प्रत्येक मशीन पर Git रिपॉजिटरी क्लोन डाल दिया है।) मैं जिस समाधान के साथ आया हूं वह यह है:

मैंने अपने संपादक को geditor में सेट किया

git config --global core.editor giteditor

तब मैं एक प्रतीकात्मक कड़ी बनाएं जिसका नाम giteditor जो मेरे में है पथ । (मेरे पास एक व्यक्तिगत बिन निर्देशिका है, लेकिन PATH में कहीं भी काम करता है।) यह लिंक मेरी पसंद के वर्तमान संपादक को इंगित करता है। विभिन्न मशीनों और विभिन्न प्लेटफार्मों पर, मैं अलग-अलग संपादकों का उपयोग करता हूं, इसलिए इसका मतलब है कि मुझे अपने सार्वभौमिक गिट कॉन्फ़िगरेशन ( .gitconfig ) को बदलने की ज़रूरत नहीं है , बस लिंक जो कि giteditor है इंगित करता है।

प्रतीकात्मक लिंक मेरे द्वारा ज्ञात प्रत्येक ऑपरेटिंग सिस्टम द्वारा संभाला जाता है, हालांकि वे विभिन्न कमांड का उपयोग कर सकते हैं। लिनक्स के लिए, आप ln -s का उपयोग करते हैं । विंडोज के लिए, आप cmd बिल्ट-इन mklink का उपयोग करते हैं । उनके पास अलग-अलग वाक्यविन्यास हैं (जो आपको ऊपर देखना चाहिए), लेकिन यह सभी एक ही तरह से काम करता है, वास्तव में।


वास्तव में, मैंने विंडोज 7 पर यह कोशिश की और यह एमएसआईएस गिट से काम नहीं करता है। यह कहता हैerror: cannot spawn giteditor: No such file or directory
डैनियलस्कूल

4

VonC के सुझाव के आधार पर , इसने मेरे लिए काम किया (मुझे पागल कर रहा था):

git config --global core.editor "'C:/Program Files (x86)/Sublime Text 3/subl.exe' -wait"

ओमिटिंग से -waitसमस्याएं हो सकती हैं, खासकर यदि आप जेरिट के साथ काम कर रहे हैं और आईडी बदल सकते हैं जिसे मैन्युअल रूप से आपके प्रतिबद्ध संदेश के नीचे कॉपी करना होगा।


4

मुझे Windows में Notepad ++ लॉन्च करने के लिए Git प्राप्त करने के लिए निम्न दोनों करने की आवश्यकता थी :

  • निम्नलिखित जोड़ें .gitconfig:

    editor = 'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin
    
  • व्यवस्थापक के रूप में चलाने के लिए गिट बैश शेल को लॉन्च करने के लिए शॉर्टकट को संशोधित करें, और फिर गिट बैश शेल को लॉन्च करने के लिए इसका उपयोग करें। मैं अनुमान लगा रहा था कि संदर्भ मेनू प्रविष्टि "यहां बैश बैश" आवश्यक अनुमतियों के साथ नोटपैड ++ लॉन्च नहीं कर रही थी।

उपरोक्त दोनों करने के बाद इसने काम किया।


3

मैं विंडोज पर साइगविन का उपयोग करता हूं , इसलिए मैं उपयोग करता हूं:

export EDITOR="emacs -nw"

के -nwलिए है no-windows, यानी एक्सएसी बताएं कि एक्स विंडो की कोशिश और उपयोग न करें ।

Emacs कीबाइंडिंग मेरे लिए विंडोज शेल से काम नहीं करती है, इसलिए मैं केवल इसे सिग्विन शेल से ही उपयोग करूंगा ... ( rxvt की सिफारिश की गई है।)


3

Gity के संपादक के रूप में Geany का उपयोग करने के लिए यह मेरा सेटअप है :

git config --global core.editor C:/path/to/geany.bat

निम्नलिखित सामग्री के साथ geany.bat:

#!/bin/sh
"C:\Program Files\Geany\bin\Geany.exe" --new-instance "$*"

यह डॉस कंसोल और एमएसआईजिट दोनों में काम करता है।


2
VonC ने नोटपैड ++ के बारे में उत्तर दिया, मेरा उत्तर गीन के लिए है?
चार्ल्सबी

2

ऐसा लगता है जैसे अगर पथ में रिक्त स्थान हैं तो गिट को संपादक नहीं मिलेगा। इसलिए आपको पैट्रिक के उत्तर में उल्लिखित बैच फ़ाइल को गैर-व्हाट्सएप पथ में रखना होगा ।


3
यह प्रारूप रिक्त स्थान वाले रास्तों के लिए ठीक काम करता है: git config --global core.editor "\" c: \ Program Files \ textpad 5 \ textpad.exe \ "" तो यह आपके लिए एक बैच फ़ाइल बनाने से बचने के लिए व्यावहारिक हो सकता है
कार्ल

2

मुझे वर्डपैड , कोमोडो एडिट और मैं इसे देने वाले हर दूसरे संपादक के साथ सहयोग करने के लिए जीआईटी प्राप्त करने में कठिनाई हो रही है। संपादन के लिए अधिकांश खुले हैं, लेकिन Git स्पष्ट रूप से सहेजें / बंद होने की प्रतीक्षा नहीं करता है।

बैसाखी के रूप में, मैं अभी कर रहा हूँ

git commit -m "Fixed the LoadAll method"

चीजों को चालू रखने के लिए। यह मेरी प्रतिबद्ध संदेशों को शायद कम से कम रखने की ओर जाता है, लेकिन स्पष्ट रूप से Git के विंडोज संस्करण पर कुछ काम किया जाना है।

GitGUI भी उतना बुरा नहीं है। यह थोड़ा उन्मुखीकरण लेता है, लेकिन इसके बाद, यह काफी अच्छी तरह से काम करता है।


2

मैं Emacs का उपयोग करना पसंद करता हूं। इसे स्थापित करना थोड़ा मुश्किल हो सकता है।

  1. Emacs डाउनलोड करें और इसे कहीं अनपैक करें c:\emacs
  2. भागो c:\emacs\bin\addpm.exe। यदि आप Windows Vista या उससे ऊपर का उपयोग कर रहे हैं, तो आपको राइट-क्लिक करें और "व्यवस्थापक के रूप में चलाएं"। यह निष्पादन योग्य को आपके रास्ते में लाएगा।
  3. (server-start)अपनी .emacsफ़ाइल में कहीं जोड़ें । सलाह के लिए एमएसीएस विंडोज एफएक्यू देखें कि आपकी .emacsफाइल कहां रखी जाए ।
  4. git config --global core.editor emacsclientw

Git अब मौजूदा Emacs प्रक्रिया के भीतर फाइलें खोलेगा। आपको उस मौजूदा प्रक्रिया को मैन्युअल रूप से चलाना होगा c:\emacs\bin\runemacs.exe


1

मैं उद्धरणों का उपयोग करके EDITOR चर सेट करके पर्यावरण संस्करण प्राप्त करने में कामयाब रहा और /:

EDITOR="c:/Program Files (x86)/Notepad++/notepad++.exe"

1

मैं सिर्फ एक ही समस्या थी और एक अलग समाधान पाया। मैं ला रही थी

error: There was a problem with the editor 'ec'

मुझे मिल गया है VISUAL=ec, और ec.batमेरे पथ पर एक बैच फ़ाइल है जिसमें एक पंक्ति है:

c:\emacs\emacs-23.1\bin\emacsclient.exe %*

यह मुझे कमांड लाइन से फाइलों को संपादित करने देता है ec <filename>, और VISUALसेट होने का मतलब है कि अधिकांश यूनिक्स प्रोग्राम इसे उठाते हैं। Git मेरे अन्य आदेशों हालांकि लिए अलग तरह से पथ खोज करने के लिए लगता है - जब मैं को देखा एक git commitमें प्रक्रिया की निगरानी मैंने देखा कि इसके लिए रास्ते पर हर फ़ोल्डर में देखें ecऔर के लिए ec.exeहै, लेकिन के लिए नहीं ec.bat। मैंने एक और पर्यावरण चर जोड़ा ( GIT_EDITOR=ec.bat) और सब ठीक था।


1

मैं विंडोज के लिए GitHub का उपयोग कर रहा हूं जो एक अच्छा दृश्य विकल्प है। लेकिन मैं कमांड लाइन को भी पसंद करता हूं, इसलिए इसे काम करने के लिए जब मैं एक गिट शेल में एक रिपॉजिटरी खोलता हूं तो मैं बस निम्नलिखित सेट करता हूं:

git config --global core.editor vim

जो बहुत अच्छा काम करता है।



1

मैं एक सुंदर सरल समाधान यहाँ पोस्ट पाया किया गया एक - हालांकि उस मार्ग में एक गलती हो सकती है जिसमें आपको लेखक द्वारा दी गई "सबल" फ़ाइल पर कॉपी करना होगा।

मैं विंडोज 7 x64 चला रहा हूं, और मुझे /Git/cmd/इसे काम करने के लिए अपने फ़ोल्डर में "सब्ल" फाइल डालनी थी ।

यह एक आकर्षण की तरह काम करता है, हालांकि।


1

परमाणु और विंडोज 10

  1. मैंने डेस्कटॉप पर एटम आइकन को राइट क्लिक किया और गुणों पर क्लिक किया।
  2. "प्रारंभ" स्थान पथ में नकल की
  3. विंडोज एक्सप्लोरर के साथ वहाँ देखा और "atom.exe" पाया।
  4. मैंने इसे गिट बैश में टाइप किया:

    git config --global core.editor C:/Users/YOURNAMEUSER/AppData/Local/atom/app-1.7.4/atom.exe"
    

नोट: मैंने सभी के \लिए बदल दिया है /। मैंने अपने होम डायरेक्टरी में एक .bashrc बनाया और अपने होम डाइरेक्टरी /को सेट किया और यह काम किया, इसलिए मैंने मान लिया /कि जाने का रास्ता होगा।


कृपया इस URL की जाँच करें यह आपकी सामग्री की गुणवत्ता को बढ़ाने के लिए उपयोगी होगा
विली चेंग

@willie धन्यवाद, मैंने पाठ को स्वरूपित किया और कुछ टैग जोड़े। उम्मीद है कि इसमें थोड़ा सुधार होगा।
जोनाथन रामोस

0

यहाँ Cygwin के साथ एक समाधान है:

#!/bin/dash -e
if [ "$1" ]
then k=$(cygpath -w "$1")
elif [ "$#" != 0 ]
then k=
fi
Notepad2 ${k+"$k"}
  1. अगर कोई रास्ता नहीं है, कोई रास्ता नहीं है

  2. यदि रास्ता खाली है, तो खाली रास्ता पास करें

  3. यदि पथ रिक्त नहीं है, तो Windows प्रारूप में कनवर्ट करें।

फिर मैंने ये चर निर्धारित किए:

export EDITOR=notepad2.sh
export GIT_EDITOR='dash /usr/local/bin/notepad2.sh'
  1. EDITOR स्क्रिप्ट को Git के साथ काम करने की अनुमति देता है

  2. GIT_EDITOR स्क्रिप्ट को हब कमांड के साथ काम करने की अनुमति देता है

स्रोत


0

यह मेरे लिए साइगविन और टेक्स्टपैड 6 (EDIT) का उपयोग करके काम कर रहा है : यह टेक्स्टपैड 5 के साथ भी काम कर रहा है जब तक आप स्क्रिप्ट में स्पष्ट बदलाव नहीं करते हैं), और संभवतः मॉडल का उपयोग अन्य संपादकों के लिए भी किया जा सकता है:

फ़ाइल ~/.gitconfig:

[core]
    editor = ~/script/textpad.sh

फ़ाइल ~/script/textpad.sh:

#!/bin/bash

APP_PATH=`cygpath "c:/program files (x86)/textpad 6/textpad.exe"`
FILE_PATH=`cygpath -w $1`

"$APP_PATH" -m "$FILE_PATH"

यह वन-लाइनर भी काम करता है:

फ़ाइल ~/script/textpad.sh(विकल्प 2):

"`cygpath "c:/program files (x86)/textpad 6/textpad.exe"`" -m "`cygpath -w $1`"

0

यह मेरे लिए काम किया:

  1. उस निर्देशिका को जोड़ें जिसमें आपके PATH चर के लिए संपादक का निष्पादन योग्य है । (उदा "C: \ Program Files \ उदात्त पाठ 3 \" )
  2. कंप्यूटर को दोबारा चालू करो।
  3. एक्सटेंशन के बिना निष्पादन योग्य संपादक के नाम के लिए core.editor वैश्विक Git चर बदलें। '.exe' (जैसे git config --global core.editor sublime_text)

बस!

नोट: उदात्त पाठ 3 वह संपादक है जिसका मैंने इस उदाहरण के लिए उपयोग किया है।


इस तरह से कॉन्फ़िगर किए जाने पर, सब्बल टेक्स्ट 3 कई उदाहरणों को खोलता है या इस तथ्य को संभालता है कि संपादन के अंत को इंगित करने के लिए गिट को इसे बंद करने की आवश्यकता है?
जेम्स वर्ल्ड

1
मुझे लगता है कि यह एक नई विंडो खोलेगा। आप --wait स्विच ( sublimetext.com/forum/viewtopic.php?f=3&t=3257 ) जोड़ सकते हैं
nikoskip
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.