问题标签 [terminfo]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - shell 脚本如何判断它是否在支持 256 色的 xterm 窗口中运行?
我正在编写一个 shell 脚本,我想在存在时使用 256 色支持。在一个公正的世界中,xterm
只需将TERM
环境变量设置为,xterm-256color
然后我会使用它tput colors
来发现支持。
但我们生活在一个不公正的世界。 xterm
设置TERM
为xterm
即使使用TERM=xterm-256color
. 我可以从 shell 脚本中做些什么来发现脚本是否正在运行,stdout 连接到在 256 色xterm
窗口中运行的 tty?如果是这样,我可以自己设置环境变量。
bash - 确定终端格式化输出的能力?
你好 - 如果我想确定终端可以显示的颜色数量,我只需读取输出
...但是我不知道如何确定我正在写入的终端是否可以支持其他格式请求,例如粗体、下划线、反向视频、闪烁(糟糕!)。
我看到了如何通过 tput 设置输出,但在尝试之前不确定该功能是否存在。
我应该简单地假设所有终端都存在这种能力吗?
linux - 更改 xterm 为组合键生成的转义序列
我的目标是设置一个终端,其中命令行界面程序的行为与键盘输入的预期一样(该程序最初是用 xharbour 为 Windows 编写的,但现在我想将它移植到 linux)。我选择 xterm 开始,因为它更简单,无需禁用默认终端组合键。
使用腻子,大多数角色都可以很好地工作,而对于那些不使用的人,我使用自动热键,一个 ahk 脚本就可以了。例如,对于 Ctrl+F1:
^F1::SendInput ^[O5P
我尝试并修改,重新编译 terminfo,更改它并更改键盘类型,但无法获得 ^[O5P 在终端中按 Ctrl+F1 的响应。如果您知道进行此更改的任何方法,请告诉我...我已经阅读了数百页据称可以执行此操作的页面,但是所有这些更改都没有产生任何效果或没有达到预期的效果。
所以我试图修改终端设置以实现我的 Ctrl+F1 到 ^[O5P 目标,并尝试了一些类似于自动热键的命令和程序:
xmodmap
,但对于组合键它不起作用xdotool
windowactivate xyz type ^[O5P,这将返回单个字符的字符代码xmacro
,它不会将击键发送到其他窗口ironahk
,我在开始尝试运行 example.ahk 时遇到错误,并且在其简易手册中找不到我想要的命令。bind '\e[1;5P":"\e[O5P"'
,这里的第一个键码是我当前在键入 ctrl+f1 时得到的,在我希望通过这个组合得到的那个键码之后。没有效果。xbindkeys
+xvkbd
,也没有帮助。
如果您已经知道,请帮助我,设法实现这一点(更改为组合键返回的键码)。
我使用最新的 CentOS 和 Ubuntu 进行测试。
linux - 更改生成的转义序列
这个问题是我之前问题的通用版本:Change the escape sequence generated by xterm for key combination。关于如何更改 xterm 生成的转义序列(通过主目录中的 .Xresources 文件更改其转换表),我有一个很好的答案。
现在我想知道是否有更通用的方法来更改 linux (Ubuntu/CentOS) 中生成的转义序列。我的意思是,我希望更改不仅适用于 xterm,也适用于 gnome-terminals。我正在考虑使用 terminfo 来执行此操作,但我尝试并修改、重新编译了 terminfo,但无法在终端中按 Ctrl+F2 获得 ^[O5Q 响应。
我还尝试了以下操作但没有成功:
- xmodmap,但对于组合键它不起作用
- xdotool windowactivate xyz type ^[O5P,这将返回单个字符的字符代码
- xmacro,它不会将击键发送到其他窗口
- Ironahk,我在尝试运行 example.ahk 时一开始就遇到错误,并且在其简易手册中找不到我想要的命令。
- bind '\e[1;5P":"\e[O5P"',这里的第一个键码是我当前输入 ctrl+f1 时得到的,然后是我希望通过这种组合得到的键码。没有效果。
- xbindkeys + xvkbd,也没有帮助
提前致谢。
utf-8 - 仅在使用 iTerm 时垂直 tmux 边框虚线
在我的新工作中,我需要使用 mac,并且我正在尝试将 tmux 与 iTerm 版本 2 一起使用。
虽然水平边框似乎使用正确的 ACS 绘图字符 [1] 显示,但垂直边框是虚线。这在 Terminal.app 中不是问题,边框显示正确。无论我选择哪种字体,问题似乎都会发生。
在我能找到的所有关于 iTerm 和 tmux 的屏幕截图中,情况似乎也是如此。这仅仅是 iTerm 的限制,还是我的 terminfo 或 locale 有问题?
c - 如何以与终端无关的方式正确打印带有 terminfo 的特殊键序列?
我正在尝试模拟用户,按下 、 等特殊<Left Arrow>
键。我听说 curses/terminfo 可能有助于以与终端无关的方式做到这一点,但是当我尝试(使用以下代码)打印第一个字符串“text”然后发出一个序列时,我没有得到一个(with as cursor),而是。为什么?如何正确地做到这一点?<Backspace>
<Delete>
key_left
'|'
"tex|t"
"textD|"
请注意,虽然我可以使用 curses,但 ncurses 在我的用例中是不可接受的。另外,请注意,我不想使用类似的东西initscr()
,将当前终端屏幕替换为空白屏幕,这不是所需的行为。
python - 当 PyPy 和 iPython 在 virtualenv 创建的项目中共存时,PyCharm 的 Python 控制台失败
一些版本信息:
当 PyPy 和 iPython 在 virtualenv 创建的项目中共存时,PyCharm 的 Python 控制台会失败。
我创建了三个虚拟环境项目。我没有激活任何虚拟环境。所以,系统python仍然存在。
环境 - 1:
现在,当我在 PyCharm 中运行 python 控制台时,它工作正常。(PyCharm 中的解释器设置为 /path/to/sample_1/virtualenv/project/bin/python)
环境 - 2:
现在,当我在 PyCharm 中运行 python 控制台时,它工作正常。(PyCharm 中的解释器设置为 /path/to/sample_2/virtualenv/project/bin/python)
环境 - 3:
现在,当我在 PyCharm 中运行 python 控制台时,它失败并出现以下错误。(PyCharm 中的解释器设置为 /path/to/sample_3/virtualenv/project/bin/python)
请注意,任何虚拟环境中的 bin/python 都指向已安装的解释器。例如,/path/to/sample_3/virtualenv/project/bin/python 指向 pypy,/path/to/sample_1/virtualenv/project/bin/python 指向系统安装的 python。
似乎这与此有关。但是,我不确定。
请帮忙。
terminal - 在 tmux 中使用 Alt-left/right 在窗口之间切换
我正在尝试将 tmux 配置为使用 alt-left、alt-right 序列在窗口之间切换。这就是我的 .tmux.conf 中的内容
不幸的是,它不起作用。在我的机器上,alt-left 和 alt-right 分别绑定到 ^[[1;3D 和 ^[[1;3C 。我想我必须使用 terminfo override 来告诉 tmux 使用这些序列,但我不知道如何。因此,任何帮助将不胜感激。
谢谢!
unix - 为什么 tput 中同时存在 setf/setb 和 setaf/setab?
我正在尝试使用 tput 以与设备无关的方式在终端中设置前景色和背景色。
如果 termcap/terminfo/tput 的全部目的是独立于设备,为什么会有明确使用 ANSI 控件(setaf/setab)的版本和不(不应该)使用的版本?
该讨论引用了 terminfo(5) ,后者又引用了明确表示将分别使用 ANSI 而不是 ANSI 实现的标准。
为什么不只是 setf/setb 而他们总是设置前景色和背景色。我不在乎它是如何完成的,这就是我使用 tput 的原因!
linux - 如何删除文件中的终端控制转义序列?
我从远程 linux 计算机获得了日志。看起来像:
但它应该是:
杂乱的代码是终端控制转义序列,您可以使用命令“infocmp xterm”和“man terminfo”来获取更多详细信息。
我的问题是如何删除文件中的这些终端控制转义序列?
非常感谢!