gpt4 book ai didi

windows - Golang fmt.Print ("\033c") 和 fmt.Print ("\x1bc") 没有清除屏幕(ANSI Escape 代码不起作用)如何修复?

转载 作者:可可西里 更新时间:2023-11-01 11:42:02 26 4
gpt4 key购买 nike

每当我在 Windows cmd 上的 Go 中运行 fmt.Print("\033c") 时,它不会清除屏幕,而是在我执行 console 时打印 c。 log("\033c") 在 javascript 中它工作正常。

根据以下链接,这应该有效: https://en.wikipedia.org/wiki/ANSI_escape_code#Windows

https://learn.microsoft.com/en-us/windows/console/console-virtual-terminal-sequences#samples

我已经尝试在 javascript 中记录它并且它工作正常我还尝试在打印 c 的末尾添加一个\n 字符并将其更改为也刚刚打印的\x1bc:c

以下所有打印:c on windows cmd


func main() {
fmt.Print("\033c")
fmt.Print("\033c\n")
fmt.Print("\x1bc")
fmt.Print("\x1bc\n")
fmt.Println("\033c")
fmt.Println("\x1bc")
}

我预计它会像在 javascript 中那样清除屏幕,但由于某些原因它没有

澄清一下,我说的是 ANSI escape code不工作。

最佳答案

问题是 Windows 需要 ENABLE_VIRTUAL_TERMINAL_PROCESSING(0x0004) 控制台标志,我通过使用以下代码将标志添加到控制台来修复它:

package main

// #include "Windows.h"
import "C"
import "fmt"

func main() {
// Needed for getting handle and getting current console mode
var mode C.DWORD
handle := C.GetStdHandle(C.STD_OUTPUT_HANDLE)
C.GetConsoleMode(handle, &mode)

// Enable Virtual Terminal Processing by adding the flag to the current mode
C.SetConsoleMode(handle, mode|0x0004)
fmt.Print("\033c")
}

SetConsoleMode

===编辑===

就像注释中提到的 Matmarbon //#include "Windows.h" 行是必需的,你需要安装一个 gcc

关于windows - Golang fmt.Print ("\033c") 和 fmt.Print ("\x1bc") 没有清除屏幕(ANSI Escape 代码不起作用)如何修复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56460651/

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