在Ncurses上添加滚动条或使其像"more"
Add a scrollbar on Ncurses or make it like "more"
基本上我正在编写一个客户端程序,它从服务器接收响应和日志,客户端也能够向服务器发送不同信息的请求。我使用了诅咒和输出看起来相当不错。它看起来像VI,输出在顶部,用户在客户端输入命令在底部。唯一的问题是我不能滚动回…我的老板告诉我要让它看起来像"linux中更多的命令",我想坚持我的解决方案,在输出窗口的一侧添加一个滚动条…我认为服务器随机发送日志,几乎不可能(或太难)让它看起来更…
如果你在你的客户端维护一个行列表或数组,并要求护士画一个范围的行作为一个滑动窗口,你可以向上和向下滑动你的窗口响应^F ^B ^U ^D ^Y ^E
命令,这只是用不同的索引重新绘制屏幕。
我会跳过尝试绘制滚动条:它会在Linux系统上看起来不合适。甚至mc
也没有滚动条。只要在底线显示一个内容摘要,类似于vim
的Top
, Bot
, All
, N%
,当:set ruler
打开时,会感觉最自在。
我不完全确定你是否在问如何实现滚动条或如何绘制滚动条与护士。我猜是第二个。
假设您的ncurses是使用Unicode支持编译的(记住在初始化ncurses时要正确设置环境,请查看"setlang"),您可以使用以下字符:
Unicode:
▲ - U+25B2 BLACK UP-POINTING TRIANGLE
▼ - U+25BC BLACK DOWN-POINTING TRIANGLE
▮ - U+25AE BLACK VERTICAL RECTANGLE
ASCII:
176 - ░ Light shaded block
177 - ▒ Medium shaded block
178 - ▓ Dark shaded block
219 - █ Block block
编写代码在正确的位置显示黑色块应该非常简单。
如果我理解错了你的问题,请原谅。
另一种可能性是将客户端重写为IRC bot或IM客户端。用户直接向客户端或特定通道发送消息,bot执行操作并返回任何必要的回复。
美妙之处在于你可以自己跳过所有用户界面的东西——向后滚动,历史记录是通过irssi或xchat或其他客户端处理的。用户可以运行自己最喜欢的客户端。
日志记录可以通过一个中央机制来处理,发布到全世界,或者根据需要提供给特定的管理人员/管理员。
缺点是您必须维护和运行IRC服务器或XMPP服务器。如果您已经在组织的其他地方使用它们,并且将它们用于此是合适的,那么杠杆可能是值得的。如果您还没有使用一个服务,那么在客户端中节省的费用可能不值得维护另一个服务。
我过去的一个团队喜欢有一个IRC接口到BuildBot来报告签入,构建成功,构建失败,测试成功,测试失败,为我们的持续集成构建和测试设置。
- 无法同时编译 ncurses 和字符串
- ncurses 找不到任何关于cchar_t的文档
- 无法将 ncurses 函数与LD_PRELOAD挂钩
- Ncurses CTRL + s hangs getch()
- Qt - 如何将"more"数据写入QProcess?
- g++ 7.1.1 中的可变参数模板部分特化"not more specialised"
- ncurses getch() 奇怪的输出?
- 将光标位置存储在类对象中(ncurses c++)
- Apple Mach -o(ID)链接器错误,ncurses
- 当nCurses应用程序来自后台时无效内容
- 为什么我不能提供一个字符串参数来打印 ncurses?
- 将ncurses应用程序移植到iOS
- 在C 中获取Ncurses Chtype或未符号字符的整数值
- 为什么我收到错误:"there is more than one default constructor"?
- 如何在Ncurses应用程序中使用读取线
- ncurses clear() 会导致闪烁
- 使用 c++ 在 ncurses 中打印子菜单时出现问题
- ncurses (Terminal Emulator) Unicode 不可靠的下标
- 使用 Ncurses 时不打印的宽字符 (C++)
- 在Ncurses上添加滚动条或使其像"more"