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

Дело в том, что я могу скопировать строку после "не могу запустить" и вставить ее, и она запускается. Я предполагаю, что это может быть вызвано пробелами или скобками в Program Files (x86) (о чем они думали?).

Так как cygwin, кажется, справляется с этим, я решил создать символическую ссылку, скажем, в /usr /local /bin, как в моем $ PATH и установить

$ 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 

дает мне ту же ошибку.

Этот SO ответ предполагает, что я использую скрипт для открытия редактора.

Я удаляю программную ссылку gvim.exe из /usr /local /bin и

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

$ chmod u+x gvim

Я тестирую запустить скрипт, он работает, gvim запускается.

$ gvim

К сожалению, когда я запускаю commit, я получаю ошибку

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

3 ответа3

6

git config, кажется, удаляет один уровень кавычек, поэтому добавьте другой. Это работает для меня (с другим редактором):

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

(Обратите внимание на экранированные кавычки, окружающие путь, это приводит к тому, что редактор запускается всякий раз, когда вы делаете, например, git commit будет «c:/Program Files (x86)/Vim/vim73/gvim.exe», то есть с кавычками, которые сообщают оболочке bash: не пытайтесь интерпретировать () как бы то ни было.)

0

При работе с пробелами в путевых именах, как правило, рекомендуется заключать их в кавычки. Это решит вашу проблему:

git config core.editor "/cygdrive/c/Program\ Files\ \(x86\)/Vim/vim73/gvim.exe"
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. РЕДАКТОР позволяет скрипту работать с Git

  2. GIT_EDITOR позволяет скрипту работать с командами Hub

Источник

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .