gVim як редактор git під cygwin


8

Я використовую msysgit, і я хотів би, щоб gvim був моїм редактором git.

Я використовую cygwin bash замість git bash.

Біг

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

починає гвім. Але якщо я встановив це як редактор git:

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

і запускаю комісію, я отримую:

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

Тоді я додаю прострочені нахили, де потрібно:

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

Це все одно дає мені:

/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'.

Річ у тому, що я можу скопіювати рядок після "не можу запустити" і вставити її, і вона запускається. Я думаю, це може бути викликано пробілами або дужками у файлах програми (x86) (про що вони думали?).

Оскільки cygwin, здається, справляється з цим нормально, я подумав, що я можу створити симпосилання в say / usr / local / bin, як це є у моєму $ PATH та set

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

Я підтверджую, що / usr / local / bin / gvim починається gvim. І все-таки виконання зобов’язань дає мені:

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'.

Відключення core.editor та спроба

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

дає мені таку ж помилку.

Ця відповідь ТА пропонує використовувати сценарій для відкриття редактора.

Я видаляю м'яке посилання gvim.exe з / usr / local / bin та

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

$ chmod u+x gvim

Я тестую запуск сценарію, він працює, gvim запускається.

$ gvim

На жаль, коли я виконую команду, я отримую помилку

$ 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'.

Що я можу зробити, щоб використовувати gVim як редактор git? Хтось пробував? Я помилився? Я мушу визнати, що я новачок, коли мова йде про Linux.


Чи спробували ви замість цього використати cygwin vi? Ви спробували команду which gvim?
Сомантра

який gvim виводить / usr / local / bin / gvim, лише тоді, коли там є м'яке посилання або сценарій. Я, мабуть, повинен зрозуміти мою причину того, що хочу отримати gVim. Я використовую його щодня і налаштовую так, як хочу. Якщо я використовую будь-який інший, у мене буде два параметри для редагування.
johnny

Ви можете розглянути можливість використання символьних посилань або репо для своїх rc-файлів.
Сомантра

Можливо, вам доведеться зробити це за допомогою пакетного файлу, а не скрипту оболонки cygwin. Крім того, остерігайтеся конфліктів змін HOME в середовищі GVim на базі Windows та тим, що cgywin встановить $ HOME як.
Гептит

@Heptite Я також спробував створити файл bat. Не вдалося. Я отримую помилку нересту, згадану в моєму питанні. І ти маєш рацію щодо конфліктів. У мене не було конфліктів із гвімом, а з git. git config --global під cygwin зберігає в cygwin home, те ж саме під msysgit зберігає до windows home.
Johnny

Відповіді:


6

git config, здається, видаляє один рівень лапок, тому додайте інший. Це працює для мене (з іншим редактором):

git config core.editor "\" c: / Файли програми (x86) /Vim/vim73/gvim.exe \ ""

(Зверніть увагу, що уникнуті лапки навколо шляху, це призводить до того, що редактор запускається, коли ви робите, наприклад, git зобов’язаний бути "c: / Program Files (x86) /Vim/vim73/gvim.exe", тому з цитатами, які повідомляють оболонці bash не намагайтеся інтерпретувати () як би він не думав, що це означає.)


0

Працюючи з пробілами в іменах шляхів, загалом, гарна ідея скласти їх у лапки. Це вирішить вашу проблему:

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

На жаль ні. / cygdrive / c / Програма \ Файли \ (x86) /Vim/vim73/gvim.exe: / cygdrive / c / Файли програми (x86) /Vim/vim73/gvim.exe: Немає такого помилки у файлі чи каталозі: неможливо запустити / cygdrive / c / Program \ Files \ (x86) /Vim/vim73/gvim.exe: Немає такого помилки у файлі чи каталозі: виникла проблема з редактором '/ cygdrive / c / Програма \ Файли \ (x86) / Vim / vim73 / gvim.exe '. Хоча шлях правильний, / cygdrive / c / Program \ Files \ (x86) /Vim/vim73/gvim.exe
Johnny

Вибачте, я спробував це з cygwin, але я використав пакет cygwin-git. Не могли б ви сказати, як ви з'єднали cygwin та msysgit?
p.vitzliputzli

Я встановив msysgit і довго використовував git bash. Я точно не пам’ятаю, чому я почав використовувати cygwin, але те, що я зробив (робив) - це додати шлях до Git (/ cygdrive / c / програмних файлів (x86) / Git / bin) до моєї cygwin $ PATH.
Johnny

0
#!/bin/dash -e
if [ "${1#/}" != "$1" ]
then k=$(cygpath -w "$1")
elif [ "$#" != 0 ]
then k=$1
fi
exec gvim ${k+"$k"}
  1. Якщо шляху немає, не проходьте шляху

  2. Якщо шлях порожній, пройдіть порожній шлях

  3. Якщо шлях відносний, пройдіть так, як є

  4. Якщо шлях абсолютний, конвертуйте у формат Windows

Потім я встановлюю ці змінні:

export EDITOR=gvim.sh
export GIT_EDITOR='dash /usr/local/bin/gvim.sh'
  1. EDITOR дозволяє сценарію працювати з Git

  2. GIT_EDITOR дозволяє сценарію працювати з командами Hub

Джерело

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.