Bagaimana cara saya menggunakan Notepad ++ (atau lainnya) dengan msysgit?

210

Bagaimana cara menggunakan Notepad ++ (atau editor lain selain vim) dengan msysgit?

Saya mencoba semua yang berikut ini tidak berhasil:

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
PHLAK
sumber
1
Ada pesan kesalahan? Sudahkah Anda mencoba mengatur variabel lingkungan EDITOR?
csl
4
Coba cari di sini: stackoverflow.com/questions/10564/…
JasonTrue
Baru saja menambahkan beberapa informasi tentang jalur skrip, termasuk spasi, seperti yang diminta.
VonC

Jawaban:

76

Pembaruan 2010-2011:

zumalifeguard 's solusi (upvoted) lebih sederhana daripada yang asli, karena tidak perlu lagi shell pembungkus naskah.

Seperti yang saya jelaskan di " Bagaimana saya bisa mengatur editor untuk bekerja dengan Git di Windows? ", Saya lebih suka pembungkus, karena lebih mudah untuk mencoba dan beralih editor, atau mengubah jalur satu editor, tanpa harus mendaftar perubahan kata dengan git configlagi .
Tapi itu hanya aku.


Informasi tambahan : solusi berikut ini bekerja dengan Cygwin , sedangkan solusi zuamlifeguard tidak.


Jawaban asli.

Pengikut:

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 "$*"

tidak bekerja. Perintah-perintah itu ditafsirkan sebagai skrip shell, maka ide untuk membungkus setiap set windows perintah dalam shskrip.
(Seperti komentar Franky : "Ingatlah untuk menyimpan file Anda dengan ujung garis gaya Unix atau menerima pesan kesalahan yang misterius!").sh

Lebih detail tentang pertanyaan SO Bagaimana saya bisa mengatur editor untuk bekerja dengan Git di Windows?

Perhatikan opsi ' -multiInst', untuk memastikan instance baru notepad ++ untuk setiap panggilan dari Git.

Perhatikan juga bahwa, jika Anda menggunakan Git di Cygwin (dan ingin menggunakan Notepad ++ dari Cygwin ), maka scphantm menjelaskan dalam " menggunakan Notepad ++ untuk Git di dalam Cygwin " bahwa Anda harus menyadari bahwa:

gitmelewatinya cygwinjalan dan npptidak tahu apa yang harus dilakukan dengan itu

Jadi skrip dalam kasus itu adalah:

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

Beberapa baris untuk keterbacaan:

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

Dengan "$(cygpath -w "$*")"menjadi bagian penting di sini.

Val berkomentar (dan kemudian dihapus) bahwa Anda tidak boleh menggunakan -notabbaropsi:

Tidak ada gunanya menonaktifkan tab selama rebase, tetapi membuat banyak kerugian bagi kegunaan Notepad umum karena -notabmenjadi pengaturan default dan Anda harus Settings>Preferences>General>TabBar> Hide>unchecksetiap kali Anda memulai notepad setelah rebase. Ini adalah neraka. Anda merekomendasikan neraka.

Jadi gunakan agak:

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

Itu adalah:

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

Jika Anda ingin menempatkan skrip ' npp.sh' di jalur dengan spasi (seperti pada ' c:\program files\...',), Anda memiliki tiga opsi:

  • Cobalah untuk mengutip lintasan (kutipan tunggal atau ganda), seperti pada:

    git config --global core.editor 'C:/program files/git/npp.sh'
  • atau coba notasi shortname (tidak terbukti bodoh):

    git config --global core.editor C:/progra~1/git/npp.sh
  • atau (favorit saya) tempat ' npp.sh' di bagian direktori %PATH%variabel lingkungan Anda . Anda tidak perlu menentukan jalur apa pun untuk skrip.

    git config --global core.editor npp.sh
  • Steiny melaporkan komentar yang harus dilakukan:

    git config --global core.editor '"C:/Program Files (x86)/Git/scripts/npp.sh"'
VonC
sumber
Saya dapat ini bekerja dengan menempatkan npp.sh di root drive saya (yaitu - C: /npp.sh). Setiap kali saya mencoba menargetkan folder dengan spasi (mis. - D: / Program Files (x86) /Git/npp.sh) di dalamnya gagal, apa cara yang tepat untuk keluar dari spasi dan / atau membuatnya berfungsi?
PHLAK
beri tanda kutip di sekitarnya. Lihat bagaimana dia mengutip semua hal dalam contohnya?
Fred
2
Jawaban oleh zumalifeguard bekerja untuk saya. Itu tidak memerlukan pembungkus skrip shell.
wbinford
1
@wbinford: Saya telah menambahkan tautan ke jawaban zumalifeguard (yang saya undur), serta alasan saya lebih memilih mendaftarkan pembungkus, daripada perintah langsung.
VonC
1
Saya sudah mencoba beberapa kombinasi di atas dan tidak ada yang berhasil dengan git. saya memiliki skrip npp di jalur saya dan jika dari konsol cygwin saya ketik, "npp {file}" npp membuka file dengan baik, tetapi ketika saya melakukan "git rebase -i" npp dibuka dengan file kosong alih-alih gabungkan file. ada ide mengapa ini akan terjadi?
scphantm
433
git config --global core.editor "'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

Atau, untuk Windows 64-bit dan instalasi Notepad ++ 32-bit:

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

Atau, berikut ini dapat dikeluarkan pada baris perintah pada Windows 32-bit atau 64-bit. Ini akan menarik lokasi notepad ++ .exe dari registri dan mengkonfigurasi git untuk menggunakannya secara otomatis:

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"

Jika Anda ingin menempatkan di atas dari file .BAT atau .CMD, Anda harus mengganti% A dengan %% A dan% B dengan %% B

zumalifeguard
sumber
9
bekerja di ekstensi git juga. Perhatikan bahwa untuk windows 64bit entri adalah"C:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -notabbar -nosession -noPlugin
Tim Abell
15
Yang konyol adalah -notabbar akan menonaktifkan bilah tab secara permanen, bukan hanya untuk sesi itu. Saat menjalankan notepad ++ secara normal, Anda harus masuk ke dialog pengaturan dan mengaktifkan kembali bilah tab.
Oskar Berggren
4
Saya harus menggunakan: git config --global core.editor "c\:/Program\ Files\ \(x86\)/Notepad++/notepad++.exe -multiInst -nosession -noPlugin" ... tidak yakin mengapa.
David Faivre
1
Saya memiliki Windows 7 64-bit, msysgit v1.9.2 dan Notepad ++ v6.6.9 dan ini bekerja dengan SEMPURNA . Terima kasih.
Radu Murzea
2
@CoDEmanX Tanpa -multiInstitu kemungkinan hanya akan memberi sinyal Notepad ++ yang sudah berjalan untuk membuka file dan kemudian segera keluar. Ini bisa menjadi masalah besar jika apa pun panggilan editor berharap untuk kembali hanya setelah selesai mengedit (yaitu operasi sinkron, seperti halnya ketika memanggil vi). Coba rebase interaktif ( git rebase -i), misalnya. Jika ini masih berfungsi seperti yang diharapkan, maka Anda baik-baik saja.
blubberdiblub
7

Ini bekerja untuk saya

git config --global core.editor C:/Progra~1/Notepad++/notepad++.exe
Tim Scott
sumber
saya melakukan hal yang sama .. sekarang bagaimana membuka notepad ++ untuk berkomunikasi dengan pesan ?? apa komad ?? tolong beri Anda contoh
shridutt kothari
4
Menambahkan -multiInstopsi sangat penting di sini, seperti pada jawaban lainnya.
blubberdiblub
1
Ini tidak baik karena dua alasan. Pertama, jika volume C: adalah NTFS dengan opsi nama file 8.3 dimatikan, tidak ada C:\Progra~1sama sekali. Kedua, mungkin ada banyak C:\Progra*direktori, jadi ~1suffix belum tentu yang valid.
kkm
5
git config core.editor "\"C:\Program Files (x86)\Notepad++\notepad++.exe\""
Jus
sumber
Itu berhasil bagi saya! Setelah itu .gitconfig terlihat seperti: [core] editor = \ "c: \\ Program Files (x86) \\ Notepad ++ \\ notepad ++. Exe \" -multiInst -nosession -noPlugin
AtliB
Lihat jawaban pilihan tertinggi, yang mencakup ini (saya tidak membaca cukup jauh)
AtliB
3

Saya menggunakan pendekatan dengan variabel PATH. Path ke Notepad ++ ditambahkan ke variabel PATH sistem dan kemudian core.editor diatur seperti berikut:

git config --global core.editor notepad++

Anda juga dapat menambahkan beberapa parameter tambahan untuk Notepad ++:

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

(seperti yang saya perinci dalam " Git core.editorfor Windows ")

Dan di sini Anda dapat menemukan beberapa opsi yang dapat Anda gunakan saat menyatakan Notepad ++ Command Line Options .

starikovs
sumber
1

UPDATE 2015

Jika Anda membongkar / menginstal Notepad ++ ke c:\utils\npp\dan mengganti nama notepad ++. Exe ke npp.exe untuk kesederhanaan, maka yang harus Anda lakukan adalah

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

Tidak ada skrip pembungkus atau tipu daya lainnya. Tidak perlu memiliki Notepad ++ di PATH.

Dan Dascalescu
sumber
Pembaruan 2020: tampaknya Anda melewatkan opsi untuk membuka instance notepad baru. Saya telah menggunakan dari cmd.exe git config --global core.editor "c:\\soft\\notepad++\\notepad++.exe -multiInst -notabbar -nosession -noPlugin"dan berfungsi dari keduanya cmd terminaldangit bash
oleksa
1

Saya menggunakan Windows 10 dan notepad ++, dan saya mendapatkan pesan kesalahan ini:

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

Jadi saya membuat pengaturan dengan cara ini:

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

dan itu berhasil

Juan Luis Vivas Occhipinti
sumber
0

Ikuti instruksi ini,

  1. Pertama, pastikan Anda telah menginstal notepad ++ di sistem dan itu adalah program default untuk membuka file .txt.

  2. Kemudian Instal gitpad di sistem Anda. Perhatikan yang terakhir saya periksa tautan unduhannya rusak, jadi unduh dari sini seperti yang dijelaskan .

Kemudian ketika melakukan Anda harus melihat editor teks favorit Anda muncul.

Aditya P
sumber
0

Saya menggunakan solusi starikovs. Saya mulai dengan jendela bash dan memberikan perintah

cd ~
touch .bashrc

Kemudian saya menemukan file .bashrc di windows explorer, membukanya dengan notepad ++ dan menambahkan

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

sehingga bash tahu di mana menemukan Notepad ++. (Memiliki Notepad ++ di bash PATH adalah hal yang berguna sendiri!) Lalu aku menempelkan kalimatnya

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

ke jendela bash. Saya memulai jendela bash baru untuk repositori git untuk menguji berbagai hal dengan perintah

git rebase -i HEAD~10

dan file dibuka di Notepad ++ seperti yang diharapkan.

Ivan
sumber
0

Inilah solusi dengan Cygwin:

#!/bin/dash -e
if [ "$1" ]
then k=$(cygpath -w "$1")
elif [ "$#" != 0 ]
then k=
fi
Notepad2 ${k+"$k"}
  1. Jika tidak ada jalur, tidak ada jalur

  2. Jika jalur kosong, lewati jalur kosong

  3. Jika path tidak kosong, konversikan ke format Windows.

Lalu saya mengatur variabel-variabel ini:

export EDITOR=notepad2.sh
export GIT_EDITOR='dash /usr/local/bin/notepad2.sh'
  1. EDITOR memungkinkan skrip bekerja dengan Git

  2. GIT_EDITOR memungkinkan skrip bekerja dengan perintah Hub

Sumber

Steven Penny
sumber