ฉันจะใช้ Notepad ++ (หรืออื่น ๆ ) กับ msysgit ได้อย่างไร


210

ฉันจะใช้ Notepad ++ (หรือตัวแก้ไขอื่น ๆ นอกจาก vim) กับ msysgit ได้อย่างไร

ฉันพยายามต่อไปนี้ทั้งหมดโดยไม่มีประโยชน์:

git config --global core.editor C:\Program Files\Notepad++\notepad++.exe

git config --global core.editor "C:\Program Files\Notepad++\notepad++.exe"

git config --global core.editor C:/Program Files/Notepad++/notepad++.exe

git config --global core.editor C:\\Program Files\\Notepad++\\notepad++.exe

1
ข้อความแสดงข้อผิดพลาดใด ๆ คุณลองตั้งค่าตัวแปรสภาพแวดล้อมของ EDITOR แล้วหรือยัง
csl

4
ลองดูที่นี่: stackoverflow.com/questions/10564/…
JasonTrue

เพิ่งเพิ่มข้อมูลเกี่ยวกับเส้นทางของสคริปต์รวมถึงช่องว่างตามที่ร้องขอ
VonC

คำตอบ:


76

อัปเดต 2010-2011:

โซลูชันของzumalifeguard (upvoted) นั้นง่ายกว่าโซลูชันดั้งเดิมเนื่องจากไม่ต้องการสคริปต์ shell wrapper อีกต่อไป

ดังที่ฉันอธิบายใน " ฉันจะตั้งค่าตัวแก้ไขให้ทำงานกับ Git บน Windows ได้อย่างไร " ฉันชอบ wrapper เพราะง่ายกว่าที่จะลองและสลับผู้แก้ไขหรือเปลี่ยนเส้นทางของตัวแก้ไขเดียวโดยไม่ต้องลงทะเบียนการเปลี่ยนแปลงดังกล่าว กับgit configอีกครั้ง
แต่นั่นเป็นเพียงฉัน


ข้อมูลเพิ่มเติม : โซลูชันต่อไปนี้ใช้งานได้กับCygwinในขณะที่โซลูชันของ zuamlifeguard ไม่ทำงาน


คำตอบเดิม

ดังต่อไปนี้:

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

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

ทำงานได้ดี คำสั่งเหล่านั้นถูกตีความว่าเป็นเชลล์สคริปต์ดังนั้นแนวคิดที่จะรวมชุดของคำสั่งต่าง ๆ ไว้ในshสคริปต์
(ตามความเห็นของFranky : "อย่าลืมบันทึกไฟล์ของคุณด้วยการสิ้นสุดบรรทัดสไตล์ Unix หรือรับข้อความแสดงข้อผิดพลาดลึกลับ!").sh

รายละเอียดเพิ่มเติมเกี่ยวกับคำถาม SO ฉันจะตั้งค่าเครื่องมือแก้ไขให้ทำงานกับ Git บน Windows ได้อย่างไร

สังเกต-multiInstตัวเลือก '' เพื่อให้แน่ใจว่ามีอินสแตนซ์ใหม่ของ notepad ++ สำหรับการโทรแต่ละครั้งจาก Git

โปรดทราบว่าหากคุณใช้ Git บนCygwin (และต้องการใช้ Notepad ++ จาก Cygwin ) scphantmจะอธิบายใน "การใช้ Notepad ++ สำหรับ Git ใน Cygwin " ที่คุณต้องระวัง:

gitกำลังผ่านcygwinเส้นทางและnppไม่รู้จะทำอย่างไรกับมัน

ดังนั้นสคริปต์ในกรณีนี้จะเป็น:

#!/bin/sh
"C:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -notabbar -nosession -noPlugin "$(cygpath -w "$*")"

หลายบรรทัดสำหรับการอ่านได้:

#!/bin/sh
"C:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -notabbar \
  -nosession -noPlugin "$(cygpath -w "$*")"

ด้วย"$(cygpath -w "$*")"การเป็นส่วนสำคัญที่นี่

Val แสดงความคิดเห็น (แล้วลบ) ที่คุณไม่ควรใช้-notabbarตัวเลือก:

มันไม่ดีเลยที่จะปิดการใช้งานแท็บในระหว่างการรีบูต แต่ทำให้เกิดความเสียหายอย่างมากต่อการใช้งาน Notepad ทั่วไปเนื่องจาก-notabกลายเป็นการตั้งค่าเริ่มต้นและคุณต้องSettings>Preferences>General>TabBar> Hide>uncheckทุกครั้งที่คุณเริ่ม notepad หลังจากการรีบูต นี่คือนรก คุณแนะนำนรก

ดังนั้นควรใช้:

#!/bin/sh
"C:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -nosession -noPlugin "$(cygpath -w "$*")"

นั่นคือ:

#!/bin/sh
"C:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -nosession \
  -noPlugin "$(cygpath -w "$*")"

หากคุณต้องการวางสคริปต์ ' npp.sh' ในเส้นทางที่มีช่องว่าง (เหมือนใน ' c:\program files\...',) คุณมีสามตัวเลือก:

  • พยายามเสนอราคาพา ธ (เครื่องหมายคำพูดเดี่ยวหรือคู่) ตามที่:

    git config --global core.editor 'C:/program files/git/npp.sh'
  • หรือลองใช้สัญกรณ์สั้น (ไม่ได้พิสูจน์อักษร):

    git config --global core.editor C:/progra~1/git/npp.sh
  • หรือ (ชื่นชอบ) วาง ' npp.sh' ในส่วนไดเรกทอรีของ%PATH%ตัวแปรสภาพแวดล้อมของคุณ คุณจะไม่ต้องระบุเส้นทางใด ๆ สำหรับสคริปต์

    git config --global core.editor npp.sh
  • รายงานSteiny ในความคิดเห็นที่ต้องทำ:

    git config --global core.editor '"C:/Program Files (x86)/Git/scripts/npp.sh"'

ฉันได้สิ่งนี้เพื่อทำงานโดยการวาง npp.sh ไว้ในรากของไดรฟ์ของฉัน (เช่น - C: /npp.sh) เมื่อใดก็ตามที่ฉันพยายามกำหนดเป้าหมายโฟลเดอร์ด้วยช่องว่าง (เช่น - D: / Program Files (x86) /Git/npp.sh) ในโฟลเดอร์ล้มเหลววิธีที่เหมาะสมในการหลบหนีช่องว่างคืออะไรและ / หรือทำให้มันทำงานได้อย่างไร
PHLAK

ใส่เครื่องหมายคำพูดล้อมรอบมัน มาดูกันว่าเขามีคำพูดล้อมรอบสิ่งทั้งหมดในตัวอย่างของเขา?
Fred

2
คำตอบโดย zumalifeguard ทำงานให้ฉัน ไม่จำเป็นต้องใช้ shell wrapper
wbinford

1
@wbinford: ฉันได้เพิ่มลิงก์ไปยังคำตอบของ zumalifeguard (ซึ่งฉัน upvoted) รวมถึงเหตุผลที่ฉันชอบลงทะเบียน wrapper มากกว่าคำสั่งโดยตรง
VonC

1
ฉันลองชุดค่าผสมด้านบนหลายชุดแล้วและไม่สามารถใช้กับคอมไพล์ได้ ฉันมีสคริปต์ npp ของฉันในเส้นทางของฉันและถ้าจากคอนโซล cygwin ของฉันฉันพิมพ์ "npp {file}" npp เปิดไฟล์ได้ดี แต่เมื่อฉันทำ "git rebase -i" npp เปิดด้วยไฟล์เปล่าแทนที่จะเป็น รวมไฟล์ ความคิดใด ๆ ว่าทำไมสิ่งนี้จะเกิดขึ้น?
scphantm

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

หรือสำหรับ Windows 64 บิตและการติดตั้ง Notepad ++ แบบ 32 บิต:

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

หรือสามารถออกคำสั่งต่อไปนี้บนบรรทัดคำสั่งบน Windows 32 บิตหรือ 64 บิต มันจะดึงตำแหน่งของ notepad ++. exe ออกจากรีจิสทรีและกำหนดค่า git ให้ใช้โดยอัตโนมัติ:

FOR /F "usebackq tokens=2*" %A IN (`REG QUERY "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths\notepad++.exe" /ve`) DO git config --global core.editor "'%B' -multiInst -notabbar -nosession -noPlugin"

หากคุณต้องการวางข้างบนจากไฟล์. BAT หรือ. CMD คุณต้องแทนที่% A ด้วย %% A และ% B ด้วย %% B


9
ทำงานในส่วนขยาย git ด้วย โปรดทราบว่าสำหรับ 64 บิต windows รายการคือ"C:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -notabbar -nosession -noPlugin
Tim Abell

15
สิ่งที่โง่คือ -notabbar จะปิดการใช้งานแถบแท็บอย่างถาวรไม่ใช่แค่สำหรับเซสชันนั้น เมื่อเรียกใช้ notepad ++ ตามปกติคุณจะต้องเข้าไปที่กล่องโต้ตอบการตั้งค่าและเปิดใช้งานแถบแท็บอีกครั้ง
Oskar Berggren

4
ฉันต้องใช้: git config --global core.editor "c\:/Program\ Files\ \(x86\)/Notepad++/notepad++.exe -multiInst -nosession -noPlugin" ... ไม่แน่ใจว่าทำไม
David Faivre

1
ฉันมี Windows 7 64 บิต v1.9.2 msysgit และ Notepad ++ v6.6.9 และทำงานอย่างสมบูรณ์แบบ ขอบคุณ
Radu Murzea

2
@CoDEmanX หากไม่มี-multiInstมันก็น่าจะเป็นสัญญาณของ Notepad ++ ที่กำลังรันอยู่เพื่อเปิดไฟล์จากนั้นออกทันที นี่อาจเป็นปัญหาใหญ่หากสิ่งที่เรียกว่าตัวแก้ไขคาดว่าจะส่งคืนเมื่อแก้ไขเสร็จแล้วเท่านั้น (เช่นการดำเนินการแบบซิงโครนัสเช่นเดียวกับกรณีที่เรียกใช้ vi) ลองใช้ rebase เชิงโต้ตอบ ( git rebase -i) ตัวอย่างเช่น หากยังใช้งานได้ตามที่คาดไว้แสดงว่าคุณไม่เป็นไร
blubberdiblub

7

มันใช้งานได้สำหรับฉัน

git config --global core.editor C:/Progra~1/Notepad++/notepad++.exe

ฉันทำเช่นเดียวกัน .. ตอนนี้วิธีการเปิดแผ่นจดบันทึก ++ เพื่อส่งข้อความ ??? คอมม่าคืออะไร? ได้โปรดยกตัวอย่าง
shridutt kothari

4
การเพิ่ม-multiInstตัวเลือกเป็นสิ่งสำคัญที่นี่เช่นเดียวกับคำตอบอื่น ๆ
blubberdiblub

1
สิ่งนี้ไม่ดีด้วยเหตุผลสองประการ ก่อนอื่นถ้าปริมาตร C: เป็น NTFS โดยที่ตัวเลือกชื่อไฟล์ 8.3 ถูกปิดอยู่ก็จะไม่มีC:\Progra~1เลย ประการที่สองอาจมีหลายC:\Progra*ไดเรกทอรีดังนั้น~1คำต่อท้ายจึงไม่จำเป็นต้องเป็น ไดเรกทอรีที่ถูกต้อง
kkm

5
git config core.editor "\"C:\Program Files (x86)\Notepad++\notepad++.exe\""

นั่นเป็นเคล็ดลับสำหรับฉัน! หลังจากนั้น. gitconfig จะมีลักษณะดังนี้: [core] editor = \ "c: \\ Program Files (x86) \\ Notepad ++ \\ notepad ++. exe \" -multiInst -nosession -noPlugin
AtliB

ดูคำตอบที่โหวตสูงสุดซึ่งรวมถึงเรื่องนี้ (ฉันไม่ได้อ่านมากพอ)
AtliB


3

ฉันใช้วิธีการกับตัวแปร PATH Path to Notepad ++ จะถูกเพิ่มไปยังตัวแปร PATH ของระบบจากนั้น core.editor จะถูกตั้งค่าดังนี้:

git config --global core.editor notepad++

นอกจากนี้คุณอาจเพิ่มพารามิเตอร์เพิ่มเติมสำหรับ Notepad ++:

git config --global core.editor "notepad++.exe -multiInst"

(ดังที่ฉันได้อธิบายไว้ใน " Git core.editorสำหรับ Windows ")

และที่นี่คุณสามารถพบตัวเลือกบางอย่างที่คุณอาจจะใช้เมื่อระบุ Notepad ++ คำสั่งตัวเลือกสาย


1

อัปเดต 2558

หากคุณแกะ / ติดตั้ง Notepad ++ ลงในc:\utils\npp\และเปลี่ยนชื่อ notepad ++. exe เป็น npp.exe เพื่อความเรียบง่ายสิ่งที่คุณต้องทำคือ

git config --global core.editor c:/utils/npp/npp.exe

ไม่มีสคริปต์ตัวตัดหรือเล่ห์เหลี่ยมอื่น ๆ ไม่จำเป็นต้องมีแผ่นจดบันทึก ++ ใน PATH


อัปเดต 2020: ดูเหมือนว่าคุณพลาดตัวเลือกในการเปิดอินสแตนซ์แผ่นจดบันทึกใหม่ ฉันใช้จาก cmd.exe git config --global core.editor "c:\\soft\\notepad++\\notepad++.exe -multiInst -notabbar -nosession -noPlugin"และใช้งานได้ทั้งจากcmd terminalและgit bash
oleksa

1

ฉันใช้ Windows 10 และ notepad ++ และฉันได้รับข้อความแสดงข้อผิดพลาดนี้:

line 0: syntax error near unexpected token `(' git windows

ดังนั้นฉันจะทำการติดตั้งด้วยวิธีนี้:

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

และมันใช้งานได้


0

ทำตามคำแนะนำเหล่านี้

  1. ก่อนอื่นตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งแผ่นจดบันทึก ++ในระบบของคุณและเป็นโปรแกรมเริ่มต้นในการเปิดไฟล์. txt

  2. จากนั้นติดตั้งgitpadในระบบของคุณ หมายเหตุผมที่ผ่านการตรวจสอบการเชื่อมโยงดาวน์โหลดเสียเพื่อให้ดาวน์โหลดได้จากที่นี่เป็นอธิบาย

จากนั้นในขณะที่กระทำคุณควรเห็นเครื่องมือแก้ไขข้อความที่คุณชื่นชอบโผล่ขึ้นมา


0

ฉันใช้โซลูชันของ starikovs ฉันเริ่มต้นด้วยหน้าต่างทุบตีและให้คำสั่ง

cd ~
touch .bashrc

จากนั้นฉันพบไฟล์. bashrc ใน windows explorer เปิดด้วย notepad ++ และเพิ่ม

PATH=$PATH:"C:\Program Files (x86)\Notepad++"

เพื่อให้ทุบตีรู้ว่าจะหา Notepad ++ ได้ที่ไหน (การใช้ Notepad ++ ใน bash PATH เป็นสิ่งที่มีประโยชน์ในตัวมันเอง!) จากนั้นฉันก็วางสายของเขา

git config --global core.editor "notepad++.exe -multiInst"

ลงในหน้าต่างทุบตี ฉันเริ่มต้นหน้าต่างทุบตีใหม่สำหรับที่เก็บ git เพื่อทดสอบสิ่งต่าง ๆ ด้วยคำสั่ง

git rebase -i HEAD~10

และไฟล์ที่เปิดใน Notepad ++ ตามที่หวังไว้


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 อนุญาตให้สคริปต์ทำงานกับคำสั่ง Hub

แหล่ง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.