gpt4 book ai didi

swift - 在 Swift 中启动终端编辑器,例如 vi 或 nano

转载 作者:行者123 更新时间:2023-12-04 16:16:28 25 4
gpt4 key购买 nike

我试图在用 Swift 编写的命令行程序中启动终端编辑器,例如 vi 或 nano。

这是一个幼稚的尝试,我猜测标准输入和输出应该是不同的。该程序不输出任何内容。

let task = Process()
task.launchPath = "/usr/bin/env"
task.arguments = ["nano"]
task.standardInput = FileHandle(forReadingAtPath: "/dev/tty")
task.standardOutput = FileHandle(forWritingAtPath: "/dev/tty")
task.launch()
task.waitUntilExit()

最佳答案

此示例将在终端窗口中启动“vi”编辑器。通过将代码复制/粘贴到新添加的“main.swift”文件并删除预先存在的 AppDelegate,可以在 Xcode swift 项目中运行。还需要关闭沙盒。

import Cocoa

let process = Process()
let pipe = Pipe()

process.executableURL = URL(fileURLWithPath:"/bin/sh/")
var args : [String]!
args = []
args.append("-c")
args.append("open '/usr/bin/vi'")
process.arguments = args
process.standardOutput = pipe
process.standardError = pipe
process.terminationHandler = { (process) in
print("\ndidFinish: \(!process.isRunning)")
}
let fileHandle = pipe.fileHandleForReading
do {
try process.run()
let outStr = String(data: fileHandle.readDataToEndOfFile(), encoding: .utf8)
print(outStr as Any)
} catch { print(String(data: fileHandle.readDataToEndOfFile(), encoding: .utf8) as Any)}

// **** main.swift **** //
let app = NSApplication.shared
app.setActivationPolicy(.regular)
app.activate(ignoringOtherApps:true)
app.run()

关于swift - 在 Swift 中启动终端编辑器,例如 vi 或 nano,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64426373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com