How do I clear the terminal screen down from my cursor position?

huangapple go评论85阅读模式
英文:

How do I clear the terminal screen down from my cursor position?

问题

在Go语言中,你可以使用ANSI转义码来清除屏幕。要清除当前光标位置以下的屏幕内容,你可以使用以下代码:

package main

import (
	"fmt"
	"os"
	"os/exec"
	"runtime"
)

func main() {
	clearScreen()
	fmt.Printf("?")
}

func clearScreen() {
	switch runtime.GOOS {
	case "windows":
		cmd := exec.Command("cmd", "/c", "cls")
		cmd.Stdout = os.Stdout
		cmd.Run()
	default:
		cmd := exec.Command("clear")
		cmd.Stdout = os.Stdout
		cmd.Run()
	}
}

这段代码中,clearScreen()函数根据操作系统的不同来执行相应的清屏操作。在Windows系统中,使用cmd命令cls来清屏;在其他操作系统中,使用clear命令来清屏。

你可以将需要清屏的代码放在clearScreen()函数调用之前,这样就可以在输出?之前清除屏幕下方的内容了。

英文:

In nodejs, I can clear my screen down with <WriteStream>.clearScreenDown(), i.e., process.stdout.clearScreenDown().

How would I achieve this in go?

I assume I need an ansi escape code, but I can not find any for this problem.

I have tried \033[2J, but the clears the entire screen. I only want to clear the screen down from my current cursor position.

import "fmt"

func main() {
    fmt.Printf("?")
}

答案1

得分: 2

\033[2J是正确的开始,只需要将2替换为0。

import "fmt"

func main() {
    fmt.Print("3[0J")
}
英文:

\033[2J was the right start, just need to replace the 2 with a 0.

import "fmt"

func main() {
    fmt.Print("\033[0J")
}

huangapple
  • 本文由 发表于 2022年11月8日 05:58:06
  • 转载请务必保留本文链接:https://go.coder-hub.com/74353377.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定