haskell - 如何使用 Shake 分配 PTY?
问题描述
我正在尝试从我的构建脚本以交互方式运行命令:
#!/usr/bin/env stack
{- stack
script
--resolver lts-18.8
--ghc-options -Wall
-}
import Development.Shake
main :: IO ()
main = shakeArgs shakeOptions $ do
phony "cfg" $ do
command_ [] "vim" []
但它不起作用。我想我需要分配一个终端才能以交互方式运行 vim。我怎样才能做到这一点?
解决方案
Shake
运行命令(等)的功能command
是为cmd
无需用户交互而运行的批处理命令而设计的。虽然您可以做一些事情来使它们与 Vim 之类的东西更兼容(例如InheritStdin
),但 Shake 的某些方面可能会使事情变得更难(例如捕获标准错误,这可能会导致内存泄漏)。
令人高兴的是,Shake 可以与 中的函数一样工作,因此您可以编写以下代码System.Process
,而不是调用:command
liftIO $ System.Process.createProcess $ System.Process.shell "vim"
记录具有多种类型的createProcess
进程相关设置,因此可以自定义以使 Vim 工作。
推荐阅读
- python - 层 PositionalEncoding 在 `__init__` 中有参数,因此必须覆盖 `get_config`
- java - 为什么在 spring-security 中,remember-me 的身份验证比完全身份验证要少?
- java - 如何在数字键释放时编辑 tableview 单元格并将按下的键放入 TextFieldTableCell?
- tensorflow - 我尝试拟合我的模型但收到此错误
- c# - 在组合框中设置 SelectedItem
- python - 如何将来自分组数据帧的值归入另一个分组数据帧?
- ruby-on-rails - 如何使用 Rspec 检查方法内的请求标头?
- javascript - 如何在我的应用程序的 two.js 画布上添加事件?
- python - 在 Python 中按列分组时出现关键错误
- php - MySQL 错误:3161 Laravel 无法创建临时表