我正在编写一种配置编辑器。 我的目标是允许用户使用cli编辑复杂的配置文件。
每一件事在创作上都很有效,但我对版本部分有一点疑问。
当用户进行编辑时,我想读取stdin以获取新值,我希望前一个结果出现在stdin中,并且可以直接从stdin编辑。
小例子: - 用户运行:./ my-tool编辑“NAME” - 我们在stdout上询问:“输入新名称:” - 我希望前一个结果出现在stdin中,用户可以删除它或编辑它。如果前一个结果是“测试”我希望测试在控制台上打印,那么用户可以按“del”并将“test”更改为“tes”
我希望我足够清楚......有可能吗?感谢
我的实际代码:
func getInput(txt, def string) string {
//def = former value/default value
reader := bufio.NewReader(os.Stdin)
fmt.Print("Enter '" + txt + "' of target: ")
os.Stdin.Write([]byte(def)) //Not working user can't edit this ...
tmp, err := reader.ReadString('\n')
if err != nil {
fmt.Println(err)
return _getInput(txt, def)
}
tmp = strings.TrimSpace(tmp)
fmt.Println(tmp)
return tmp
}