vim-jp / issues

有志で既知のバグや要望を検討・管理し、オフィシャルへの還元をしていきます。
https://vim-jp.org/
341 stars 11 forks source link

:args `find . -name NoexistFile` でバッファ名がbacktickになってしまう #1423

Open svardew opened 1 year ago

svardew commented 1 year ago

不具合の内容

:args `cmd ...` で backtick が空文字を返すと backtick そのものを引数リストに追加してしまう

現象・ログ

再現手順

mkdir foo_no_files cd foo_no_files LC_ALL=C vim --clean

:args `ls`
:ls
  1 %a   "`ls`"                         line 1
:call setreg('x', '')
:args `=getreg("x")`
:ls
  1 #    "`ls`"                         line 1
  2 %a   "`=getreg("x")`"               line 1
:call setreg('s', '   ')
:args `=getreg("s")`
  1      "`ls`"                         line 1
  2 #    "`=getreg("x")`"               line 1
  3 %a   "`=getreg("s")`"               line 1
:args `find .. -type f -name NotFoundFILE`
  1      "`ls`"                         line 1
  2      "`=getreg("x")`"               line 1
  3 #    "`=getreg("s")`"               line 1
  4 %a   "`find .. -type f -name NotFoundFILE`" line 1

backtick が返すのが改行一文字とかだと、その値をbufnameに使います

:args `echo ''`
:args `echo -n '  '`
:args `echo -n '        '`
:ls
  1      ""                             line 1
  2 #    "  "                          line 1
  3 %a   "        "                  line 1
:args `echo -n ''`
:ls
  1      ""                             line 1
  2      "   "                          line 1
  3 #    "           "                  line 1
  4 %a   "`echo -n ''`"                 line 1
:echo [bufnr("")]
[4] 
:echo [bufnr("^$")]
[1]

期待動作

:argsの引数が無いものとして、何もしない 個人的には bufname="" となる場合はエラーになってほしいが、意図して誰かがそうするかもしれない。

Vimのバージョン

VIM - Vi IMproved 9.0 (2022 Jun 28, compiled Aug 3 2023 13:47:55) Included patches: 1-1677

OSの種類/ディストリ/バージョン

Linux Ubuntu 16.04 32bit

使用している or 関係していそうなプラグイン

その他

vim-jp/isuuses の backtick-expansion っぽいもの

https://github.com/vim-jp/issues/issues/6#issuecomment-17291609

backtick-expansionにひっかかるようなバッファでも作れる

https://github.com/vim-jp/issues/issues/1066#issue-247970938

backtick コマンドを実行して正常に終了した場合はその結果が得られてるけど、 異常終了した場合は `test` という変な引数が残ってしまう

vim/vim の issue を調べていたら今回の挙動に引っかかりました https://github.com/vim/vim/issues/12721 `-expansion always errors #12721