4

На моем компьютере с Windows, запущенный gVim, кажется, связывает оболочку git для Windows, тогда как если я запускаю из командной строки, это не так.

Как я мог бы запустить gVim (или любую другую программу, на самом деле), не связывая оболочку и не добавляя '&' в конце каждой команды?

Любая помощь по этому вопросу будет принята с благодарностью.

Git Bash:

$ gvim hello.txt
[Terminal is now blocked]
[Hit ctrl+c or close gvim, terminal takes input]
$ 

Командная строка Windows:

> gvim hello.txt
> [ Can still access cursor and execute commands]

3 ответа3

2

Самое быстрое (и, возможно, самое грязное) решение, которое я нашел, было в состоянии использовать gvim так, как я привык, это модифицировать файл .bashrc.

Я добавил в конец следующую функцию:

gvim()
{
    /path/to/gvim.exe "$@" &
}

"$@" Принимает аргументы, переданные из оболочки, а & заставляет gvim работать в фоновом режиме.

Я бы не хотел отмечать этот ответ как принятый, так как может быть лучшее решение (например, я где-то испортил свои настройки msys/vim).

1

Ответ, который я нашел, который работает так же, как на моем Linux-компьютере, заключается в том, чтобы установить псевдоним в вашем .bashrc:

alias gvim='start gvim'

Это все еще не самое идеальное решение, но мне кажется, что оно чище, чем создание функции. Также он не печатает строку идентификатора процесса (например: «[1] 6840») при запуске или закрытии внешнего окна.

Это все еще имеет проблему с исправлением функции, которое работает только для вещей, для которых вы создаете псевдоним. Например, блокнот все еще блокирует ваш bash, если вы не создадите псевдоним начального блокнота . Основываясь на этом посте в блоге MSDN, похоже, что исполняемые файлы Windows имеют флаг, который сообщает консоли, является ли это приложением с графическим интерфейсом, но из того, что я вижу, git bash не дифференцируется на основе этого флага так же, как cmd.exe делает. Если бы вы могли прикрепить что-то к каждой введенной команде, которая проверила бы .exe для флага GUI, и предварять запуск, основываясь на вашем результате, тогда вам было бы хорошо.

0

Вы можете запустить любую программу в фоновом режиме из bash, используя &:

gvim &

Gvim отличается от большинства программ и обычно помещает себя в фоновый режим без необходимости & . Чтобы запустить его на переднем плане, обычно нужно запустить его с параметром -f . Я не знаю, почему gvim не ведет себя так из-за bash в Windows.

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