gVim sebagai editor git di bawah cygwin

8

Saya menggunakan msysgit dan saya ingin memiliki gvim sebagai editor git saya.

Saya menggunakan cygwin bash, bukan git bash.

Lari

$ /cygdrive/c/Program\ Files\ \(x86\)/Vim/vim73/gvim.exe 

mulai gvim. Tetapi jika saya mengatur ini sebagai editor git:

$ git config core.editor /cygdrive/c/Program\ Files\ \(x86\)/Vim/vim73/gvim.exe

dan jalankan commit saya dapatkan:

/cygdrive/c/Program Files (x86)/Vim/vim73/gvim.exe: -c: line 0: syntax error near unexpected token `('

Saya kemudian menambahkan backslash lolos jika diperlukan:

$ git config core.editor /cygdrive/c/Program\\\ Files\\\ \\\(x86\\\)/Vim/vim73/gvim.exe

Ini masih memberi saya:

/cygdrive/c/Program\ Files\ \(x86\)/Vim/vim73/gvim.exe: /cygdrive/c/Program Files (x86)/Vim/vim73/gvim.exe: No such file or directory
error: cannot run /cygdrive/c/Program\ Files\ \(x86\)/Vim/vim73/gvim.exe: No such file or directory
error: There was a problem with the editor '/cygdrive/c/Program\ Files\ \(x86\)/Vim/vim73/gvim.exe'.

Masalahnya adalah, saya bisa menyalin string dari setelah "tidak bisa berjalan" dan tempel dan jalankan. Saya kira itu bisa disebabkan oleh spasi atau tanda kurung di Program Files (x86) (apa yang mereka pikirkan?).

Karena cygwin tampaknya menanganinya ok saya pikir saya bisa membuat symlink di say / usr / local / bin, seperti di $ PATH saya dan set

$ git config core.editor /usr/local/bin/gvim

Saya mengkonfirmasi bahwa / usr / local / bin / gvim memulai gvim. Namun, menjalankan komit memberi saya:

error: cannot spawn /usr/local/bin/gvim.exe: No such file or directory
error: There was a problem with the editor '/usr/local/bin/gvim.exe'.

Menghapus pengaturan core.editor dan mencoba

$ export GIT_EDITOR=/usr/local/bin/gvim.exe 

memberi saya kesalahan yang sama.

Jawaban SO ini menyarankan agar saya menggunakan skrip untuk membuka editor.

Saya menghapus tautan lunak gvim.exe dari / usr / local / bin dan

$ cat > gvim
#!/bin/sh
/cygdrive/c/Program\ Files\ \(x86\)/Vim/vim73/gvim.exe

$ chmod u+x gvim

Saya menguji menjalankan skrip, itu berfungsi, gvim dimulai.

$ gvim

Sayangnya ketika saya menjalankan komit, saya mendapatkan kesalahan

$ git commit
error: cannot spawn /usr/local/bin/gvim: No such file or directory
error: There was a problem with the editor '/usr/local/bin/gvim'.

Apa yang bisa saya lakukan untuk menggunakan gVim sebagai editor git? Adakah yang sudah mencobanya? Sudahkah saya melakukan kesalahan? Saya harus mengaku sebagai pemula ketika datang ke linux.

johnny
sumber
Sudahkah Anda mencoba menggunakan cygwin vi? Sudahkah Anda mencoba perintahnya which gvim?
Somantra
yang gvim menampilkan / usr / local / bin / gvim, hanya ketika tautan lunak atau skrip ada. Saya mungkin harus menyatakan dengan lebih jelas alasan saya menginginkan gVim. Saya menggunakannya setiap hari dan telah mengaturnya seperti yang saya inginkan. Jika saya menggunakan yang lain saya akan memiliki dua pengaturan editor untuk mempertahankan.
johnny
Anda mungkin ingin mempertimbangkan untuk menggunakan symlink atau repo untuk file rc Anda.
Somantra
Anda mungkin harus melakukan ini dengan file batch daripada skrip shell cygwin. Waspadalah terhadap konflik variabel lingkungan HOME antara gVim berbasis Windows dan cgywin apa yang akan menetapkan $ HOME sebagai.
Heptite
@Heptite Saya mencoba membuat file bat untuk itu juga. Tidak berhasil Saya mendapatkan kesalahan tidak dapat menelurkan yang disebutkan dalam pertanyaan saya. Dan Anda benar tentang konflik. Saya belum memiliki konflik dengan gvim tetapi dengan git. git config - global di bawah cygwin save ke cygwin home, sama dengan msysgit save to windows home.
johnny

Jawaban:

6

git config tampaknya menghapus satu tingkat kutipan, jadi tambahkan yang lain. Ini berfungsi untuk saya (dengan editor lain):

git config core.editor "\" c: / Program Files (x86) /Vim/vim73/gvim.exe \ ""

(Catat tanda kutip yang diloloskan di sekitar jalan, ini menyebabkan editor memulai setiap kali Anda melakukan mis git commit menjadi "c: / Program Files (x86) /Vim/vim73/gvim.exe", jadi dengan kutipan yang memberi tahu bash shell untuk tidak mencoba menafsirkan () sebagai apa pun yang menurutnya artinya.)

Legolas
sumber
0

Saat bekerja dengan spasi di nama path, umumnya merupakan ide bagus untuk merangkumnya dalam tanda kutip. Ini akan menyelesaikan masalah Anda:

git config core.editor "/cygdrive/c/Program\ Files\ \(x86\)/Vim/vim73/gvim.exe"
p.vitzliputzli
sumber
Sayangnya tidak. / cygdrive / c / Program \ Files \ (x86) /Vim/vim73/gvim.exe: / cygdrive / c / Program Files (x86) /Vim/vim73/gvim.exe: Tidak ada kesalahan file atau direktori: tidak dapat menjalankan / cygdrive / c / Program \ Files \ (x86) /Vim/vim73/gvim.exe: Tidak ada kesalahan file atau direktori tersebut: Ada masalah dengan editor '/ cygdrive / c / Program \ Files \ (x86) / Vim / vim73 / gvim.exe '. Jalannya benar, / cygdrive / c / Program \ Files \ (x86) /Vim/vim73/gvim.exe
johnny
Maaf, saya mencobanya dengan cygwin tetapi saya menggunakan paket cygwin-git. Bisakah Anda memberi tahu saya bagaimana Anda terhubung cygwin dan msysgit?
p.vitzliputzli
Saya menginstal msysgit dan menggunakan git bash untuk waktu yang lama. Saya tidak ingat persis mengapa saya mulai menggunakan cygwin, tetapi yang saya lakukan adalah menambahkan path ke Git (/ cygdrive / c / Program Files (x86) / Git / bin) ke cygwin $ PATH saya.
johnny
0
#!/bin/dash -e
if [ "${1#/}" != "$1" ]
then k=$(cygpath -w "$1")
elif [ "$#" != 0 ]
then k=$1
fi
exec gvim ${k+"$k"}
  1. Jika tidak ada jalur, tidak ada jalur

  2. Jika jalur kosong, lewati jalur kosong

  3. Jika path relatif, lewat apa adanya

  4. Jika path absolut, konversikan ke format Windows

Lalu saya mengatur variabel-variabel ini:

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

  2. GIT_EDITOR memungkinkan skrip bekerja dengan perintah Hub

Sumber

Steven Penny
sumber