Thursday, May 14, 2020

Re: Starting Native Windows GVim 8.2 from MinGW Git Bash

On Thu, May 14, 2020 at 03:17:55PM -0400, johanns@nacs.net wrote:
>I finally have a newish Windows 10 64-bit laptop for a course and,
>per instructions, have installed Git Bash that uses MinGW from:
>https://git-scm.com/downloads
>
>I also have a standard native Window build of GVIm 8.2 installed under:
>C:\Program File (x86)\Vim\vim82
>which I believe was the default for the standard installer.
>
>MinGW Git Bash ships with a built-in version of vim 8.2 as MinGW
>program, but does not include GVim.
>
>What I am looking to do is to start the native Windows version of
>GVim from a the Git Bash prompt. Rather than change the path I hoped
>to use a simple bash alias with a full path to start Windows GVim
>8.2. This works except that the bash prompt blocks as if Windows
>GVim is a console program and the shell is waiting to get control
>back of the console. I am not entirely sure why the shell waits for
>Gvim to exit. The same technique I am trying to was recommended for
>MSysGit Bash and Vim 7.4 by Albert Armea at:
>https://blog.albertarmea.com/post/115102365718/using-gvim-from-git-bash
>The best reason I can fathom is that I read elsewhere that MinGW is a
>more minimalist UNIX implementation than say Cygwin and does not
>implement fork() despite providing the header file. Another
>possibility is that some trick integration set up in the bundle for
>Vim and GVim with Git is inadvertently fighting my attempt to use a
>Windows executable.
>
>Due to how Bash is invoked by the Git Bash bundle, the easiest way
>for me to configure user specific bash aliases or the like is to
>create two files:
>
>~/.bash_profile is minimal and contains:
>
>if [ -f ~/.bashrc ]; then. ~/bashrc; fi
>
>~/.bashrc has my local alias and a bash function gvim () as follows:
>
>gvim () { (env -u HOME -u VIM "/c/Program Files (x86)/vim/vim82/gvim.exe" "$*")& }

Self correction: To support multiple parameters properly I should use "$@" not
"@*", which confuses Gvim, so:

~/.bashrc has my local alias and a bash function gvim () as follows:

gvim () { (env -u HOME -u VIM "/c/Program Files (x86)/vim/vim82/gvim.exe" "$@")& }

>Another place on the Internet, I found advice to unset the HOME and
>VIM environment variables local to MinGW Bash as Windows GVIm 8.2 is
>started, but I converted a simple bash alias to bash function. While
>the env command above would run GVim as a simple alias, the Git Bash
>shell blocks waiting for GVim to exit. The bash function is needed
>so I can embed the env in a subshell with parentheses and push it to
>the background, while still passing parameters to the inner command
>line. This bash function works, starting GVim and letting the shell
>continue. I do notice that this Windows GVim shows up as a process
>when using the ps command at the Git Bash prompt. I am not sure if
>anything funny happens, based on the order I close Git Bash and GVim.
>
>I am not sure if this is the best approach. Another idea I saw on
>the Internet suggested using the bash disown built-in command, but I
>was getting syntax errors. I tried debugging with set -x in Git Bash
>but extra commands I did not expect were being generated, probably
>due to Git integration. I decided that this method is best, for now,
>but I am wondering if there are any gotchas lurking here.
>
>Thanks in advance for any advice.

--
--
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

---
You received this message because you are subscribed to the Google Groups "vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/vim_use/20200514220224.GC1444%40linux.site.

No comments: