PowerShell, vim и aliases против * .cmd (при использовании git) - PullRequest
2 голосов
/ 29 ноября 2010

У меня странная проблема.Я использую vim в качестве моего текстового редактора консоли в PowerShell.Пока это работает очень хорошо, и у меня нет особых проблем с этим.

Ранее я настроил vim с помощью пакетного скрипта (vim.cmd) в папке, доступной по PATH, которая просто вызываетvim.exe, вот так:

@echo off
"C:\Program Files\vim72\vim.exe" %*

Тогда я сказал git использовать редактор vim.cmd.Это работало нормально, пока я не заметил, что у git есть проблемы с выполнением пакета при использовании интерактивной перебазировки.

Поэтому вместо этого я попытался вместо этого сделать vim псевдонимом в моей консоли PowerShell:

Set-Alias vim "C:\Program Files\vim72\vim.exe"

Затем я сказал git использовать редактор vim.Это работает очень хорошо, как для обычных коммитов, так и для интерактивного перебазирования и т. Д. Однако при использовании этого я заметил нечто странное:

Кажется, что ни одна из этих возможностей не соответствует настройкам vim должным образом.Когда я делаю коммит и git хочет, чтобы я ввел сообщение комита в git, я вижу два разных вида и поведения vim;хотя в обоих случаях должны быть загружены одинаковые настройки (есть ли способ проверить это на самом деле?).

На следующих двух снимках экрана показаны различия в обеих настройках редактора:

vim, with batch script vim, with PowerShell alias

В чем именно причина этого, и есть ли способ это исправить?Я на самом деле хотел бы сохранить версию псевдонима с поведением разрыва строки (и отключенной строкой состояния) от другой;но понимание этого на самом деле важнее для меня ..

Спасибо!

1 Ответ

1 голос
/ 29 ноября 2010

Doh! Спасибо Doon за этот комментарий, который действительно заставил меня понять это.

При использовании vim в качестве значения core.editor в git это не заставляет git вообще использовать псевдоним PowerShell. Вместо этого git вызывает vim из своего собственного каталога bin, который содержит файл с именем vim со следующим содержимым:

#!/bin/sh

exec /share/vim/vim73/vim "$@"

Таким образом, git открывает тот экземпляр vim, который поставляется вместе с Git, и запускает его вместо этого. И там, конечно, мои личные настройки из vim моей системы отсутствуют.

После переименования псевдонима на какое-то другое время и попытки его выяснить, что git не может его использовать, поэтому я просто изменю сценарий оболочки vim в каталоге bin на в мою установку и скопируйте некоторые изменения, чтобы получить желаемый эффект.

Редактировать

Кажется, что из каталога /bin/ git не может выйти за пределы самого себя. Поэтому папка, параллельная установке git, недоступна из интерпретатора оболочки git ..

Полагаю, мне нужно будет переместить установку vim в каталог share .. Хорошо, что все остальные мои инструменты могут легко работать с другим местоположением vim <_ <</p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...