Neovim-qt: Strange ui output on windows

Created on 3 Jul 2017  路  7Comments  路  Source: equalsraf/neovim-qt

Operating System: windows
binary build: a prebuild version download from neovim's release page (neovim is 0.2.1)

reproduce:

:silent !start cmd.exe /C dir & pause

before running the command:

nvim-qt-1

after running the command:

nvim-qt-2

  1. strange output in the cmdline area
  2. tabline disappeared.

Most helpful comment

silent !start cmd.exe /c dir & pause

runs cmd.exe /c dir in a different window and runs pause after start. start <command> & pause where <command> is cmd.exe /c dir.
neovim/neovim#7343 doesn't affect that behaviour but @DustinVenegas workaround doesn't work now, because it doesn't work in a cmd.exe prompt.

I'd change that to silent !start cmd.exe /s/c "dir & pause" to mirror nvim's behaviour but /s is optional for this specific command. For reference, check s:execute() in https://github.com/junegunn/fzf/blob/master/plugin/fzf.vim for neovim and cygwin workarounds using cmd.exe start.

All 7 comments

Very strange. Does it eventually get back to normal - e.g. if you :redraw?

GUI restored after :redraw!,
But I am afraid there is an important bug like access an invalid memory area....

Possible, but first we need to figure out if the issue is in the GUI or in Neovim. Usually the GUI just renders what nvim tells it.

It seems more likely that start is producing output that somehow causes that breakage in the display.

The disappearing tabline is not unexpected as the interface scrolls to show the command output. The issue here is the displayed text.

Does this also happen with other commands? like !echo hello

neovim/neovim#5844 directly relates to this issue.

neovim-qt is fine. Neovim has issues parsing un-quoted parameters. I can definitely reproduce this in Windows using nvim 0.2.2.

Quoting the parameters to cmd.exe is a current workaround.

:silent !start cmd.exe "/C dir & pause"

@DustinVenegas Nvim prerelease (0.3.0) has some improvement with quoting on Windows, e.g. https://github.com/neovim/neovim/pull/7343

silent !start cmd.exe /c dir & pause

runs cmd.exe /c dir in a different window and runs pause after start. start <command> & pause where <command> is cmd.exe /c dir.
neovim/neovim#7343 doesn't affect that behaviour but @DustinVenegas workaround doesn't work now, because it doesn't work in a cmd.exe prompt.

I'd change that to silent !start cmd.exe /s/c "dir & pause" to mirror nvim's behaviour but /s is optional for this specific command. For reference, check s:execute() in https://github.com/junegunn/fzf/blob/master/plugin/fzf.vim for neovim and cygwin workarounds using cmd.exe start.

This issue can be closed.

Quoting the parameters to cmd.exe is a current workaround

Even in cmd.exe _itself_, start cmd.exe /C dir & pause will behave as it behaves in Nvim. This is a case where Vim is training people to do weird things.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

qwfy picture qwfy  路  3Comments

gwerbin picture gwerbin  路  10Comments

gagbo picture gagbo  路  6Comments

stu0292 picture stu0292  路  3Comments

augustblizzard picture augustblizzard  路  6Comments