skywind3000 / asyncrun.vim

:rocket: Run Async Shell Commands in Vim 8.0 / NeoVim and Output to the Quickfix Window !!
https://www.vim.org/scripts/script.php?script_id=5431
MIT License
1.84k stars 109 forks source link

-close 不work。。。 #283

Open pinggit opened 5 months ago

pinggit commented 5 months ago
AsyncRun -save=1 -focus=0 -cwd=$(VIM_FILEDIR) -mode=term -rows=20 -close python3 %
AsyncRun -save=1 -focus=0 -cwd=$(VIM_FILEDIR) -mode=term -rows=20 -close pwd

这么用有问题吗?

skywind3000 commented 5 months ago

可以用的啊,我刚又试过,-close 就是运行完自动关闭终端啊,速度太快你没看清吧,你运行个 sleep 5 试试

pinggit commented 5 months ago

sleep 5 是可以的 但是pwd就不行。。 这是应该的?

skywind3000 commented 5 months ago

当然,pwd 的输出一闪而过。

pinggit commented 5 months ago

我明白了。。你意思是说这个发完命令自动close的feature 必须得命令结束的比较慢才work?如果命令马上结束就不能自动关terminal。有什么办法在所有情况下自动关呢?很多情形下我只是发命令去生成一些文件 并不需要关心终端上出什么输出,所以自动关掉会非常有用Sent from my iPhoneOn Mar 22, 2024, at 11:29, Linwei @.***> wrote: 当然,pwd 的输出一闪而过。

—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you authored the thread.Message ID: @.***>

skywind3000 commented 5 months ago

根本不是,和快慢没关系,快慢只关系到你看得到么。

你的 work 是啥意思?根本就没有运行?还是只是一闪而过没看到?

(提问时能不能多给点信息,不要惜字如金光写个 work 让我去猜,信息你都不肯多给点,让我怎么给你回答呢?)

另外你的第一条命令有问题:

AsyncRun -save=1 -focus=0 -cwd=$(VIM_FILEDIR) -mode=term -rows=20 -close python3 %

你已经通过 -cwd=xxx 改变了 python 执行时的路径了,而 % 是基于 vim 当前路径给出的相对路径,那么如果 vim 当前路径不是文件所在位置的话,你这么写就会出错,另外你忘记加引号了,正确的写法是全部使用 $(VIM_xxx) 变量:

AsyncRun -save=1 -focus=0 -cwd=$(VIM_FILEDIR) -mode=term -rows=20 -close python3 "$(VIM_FILENAME)"

或者:

AsyncRun -save=1 -focus=0 -cwd=$(VIM_FILEDIR) -mode=term -rows=20 -close python3 "$(VIM_FILEPATH)"
pinggit commented 5 months ago

谢谢关于执行命令的方法的纠正。很精确,我理解了。原来我总是要先cd到当前目录下再执行,用你这个方法不需要了。

”你的 work 是啥意思?根本就没有运行?还是只是一闪而过没看到?”

-close的意思是:

  1. -mode=term 打开内置terminal
  2. Asynrun在终端上执行命令
  3. 命令结束,输出结果在终端
  4. -close会自动把打开的终端关上。

对吧?

但是我发现1-3都正常,但#4没执行。打开的terminal还在。我每次都要去手工关掉。 如果命令是sleep 5, -close会关掉终端。正常。 如果命令是pwd这种,命令执行完,终端一直在,不会关掉。

我漏掉了什么设置了吗还是理解有误?

On Fri, Mar 22, 2024 at 4:15 PM Linwei @.***> wrote:

根本不是,和快慢没关系,快慢只关系到你看得到么。

你的 work 是啥意思?根本就没有运行?还是只是一闪而过没看到?

另外你的第一条命令有问题:

AsyncRun -save=1 -focus=0 -cwd=$(VIM_FILEDIR) -mode=term -rows=20 -close python3 %

你已经通过 -cwd=xxx 改变了 python 执行时的路径了,而 % 是基于 vim 当前路径给出的相对路径,那么如果 vim 当前路径不是文件所在位置的话,你这么写就会出错,另外你忘记加引号了,正确的写法是全部使用 $(VIM_xxx) 变量:

AsyncRun -save=1 -focus=0 -cwd=$(VIM_FILEDIR) -mode=term -rows=20 -close python3 "$(VIM_FILENAME)"

或者:

AsyncRun -save=1 -focus=0 -cwd=$(VIM_FILEDIR) -mode=term -rows=20 -close python3 "$(VIM_FILEPATH)"

— Reply to this email directly, view it on GitHub https://github.com/skywind3000/asyncrun.vim/issues/283#issuecomment-2015837613, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAPRSHHBU2ZCLJDIV6AZYPDYZSGM7AVCNFSM6AAAAABFCKQX2KVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAMJVHAZTONRRGM . You are receiving this because you authored the thread.Message ID: @.***>

pinggit commented 5 months ago

-close的意思是:

  1. -mode=term 打开内置terminal
  2. Asynrun在终端上执行命令
  3. 命令结束,输出结果在终端
  4. -close会自动把打开的终端关上。

对吧?

但是我发现1-3都正常,但#4没执行。打开的terminal还在。我每次都要去手工关掉。 如果命令是sleep 5, -close会关掉终端。正常。 如果命令是pwd这种,命令执行完,终端一直在,不会关掉。

我漏掉了什么设置了吗还是理解有误?

按照我的理解,目前的解决方法就是任何要执行的命令后面加个sleep,就达到期望值了 (terminal自动关掉)。

AsyncRun -save=1 -focus=0 -cwd=$(VIM_FILEDIR) -mode=term -rows=10 -close python3 "$(VIM_FILENAME)" ;sleep 5

不知道有没有更好的解决方法?