【问题标题】:Bash script running in Neovim ignores "read" command [duplicate]在 Neovim 中运行的 Bash 脚本忽略“读取”命令 [重复]
【发布时间】:2020-05-14 06:19:36
【问题描述】:

考虑以下 Bash 脚本:

#!/usr/bin/env bash
read -rp "> " INPUT
echo "Your input is: $INPUT"
echo "Done"

当我在常规 Vim 中打开这个文件并运行 :!bash % 时,我得到了预期的结果:

> 测试

您的输入是:测试

完成

按 ENTER 或输入命令继续

但是,在 Neovim 中,运行相同的 :!bash % 命令似乎会忽略 read 行:

您的输入是:

完成

按 ENTER 或输入命令继续

我在 8.2.500 版本上运行 Vim,在 v0.4.3 版本上运行 Neovim。

从命令行执行脚本工作正常,到目前为止我只在 Neovim 中运行它时遇到这个问题。

我错过了什么?

【问题讨论】:

  • 这是特定于 Bash 中的 read 还是适用于所有读取标准输入的工具?
  • @thatotherguy 好点,在 Python 脚本上的结果类似,所以它似乎一般会影响标准输入。

标签: bash neovim


【解决方案1】:

来自:! 命令的手动条目:

该命令在连接的非交互式 shell 中运行 到管道(不是终端)。使用 |:terminal|运行一个 连接到终端的交互式 shell。

当它运行bash时,它的标准输入连接的是管道,而不是终端,所以你不能使用终端来响应提示。

所以试试

!te bash %s

【讨论】:

  • 差不多就是这样! :te bash % 为我做了诀窍。谢谢!与我的 Vim 工作流程相比,需要更多的关键输入,所以我最终声明此绑定在 Neovim 中具有与 F5 相同的行为:autocmd FileType sh map <F5> <Esc>:w<CR>:te bash %<CR>i
猜你喜欢
  • 2017-11-21
  • 1970-01-01
  • 2020-05-02
  • 2014-12-01
  • 2014-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-18
相关资源
最近更新 更多