如何在 CLI 中更改光标主题?

Hid*_*ynx 6 terminal

我想将光标更改为块状。

在此处输入图片说明

所有应用程序(nano、vi、vim、...)都应该有一个如上图所示的方形光标。

Sté*_*las 11

光标由终端或终端仿真器绘制,而不是由其中运行的应用程序绘制。其中一些允许用户使用转义序列更改光标的形状或属性。

可以使用cnorm(普通光标)、civis(光标不可见)或cvvis(光标非常可见)terminfo 功能(例如使用tput命令)来独立于终端类型更改光标形状。但是,它不向您保证任何cnormcvvis将是游标。

要特别影响光标的闪烁度、形状和颜色以及行为,必须在每个终端的基础上完成。

在 x86 PC VGA 和帧缓冲区虚拟控制台上的 Linux 上,可以使用转义序列进行控制,例如:

printf '\e[? X ; Ÿ ; zc '

以最简单的形式:

printf '\e[? X C”

您定义光标的高度,x范围从1(不可见光标)到 8(完整块),0为您提供默认值(当前,与 相同2)。

所以:

printf '\e[?8c'
Run Code Online (Sandbox Code Playgroud)

会给你一个完整的块光标。

实际上这就是tput cvvis发送(同时tput cnorm发送\e[0ccivis \e[1c)。

使用 3 参数形式时,行为将因底层视频驱动程序而异。例如,如您的问题所示,要获得一种灰色的非闪烁块光标,您可以这样做:

printf '\e[?81;128;240c'
Run Code Online (Sandbox Code Playgroud)

在 PC VGA Linux 控制台中。和:

printf '\e[?17;30;254c'
Run Code Online (Sandbox Code Playgroud)

在帧缓冲区 Linux 控制台中。

现在,这是特定于 Linux 的,其他终端有不同的方式来改变光标形状。例如,xtermrxvt和它们的衍生产品使用与 VT520 终端相同的序列来设置光标形状:

printf '\e[ x q'

其中x取值从 1 到 6(来自xterm 手册):

  • 0 -> 闪烁块。
  • 1 -> 闪烁块(默认)。
  • 2 -> 稳定块。
  • 3 -> 闪烁的下划线。
  • 4 -> 稳定的下划线。
  • 5 -> 闪烁条 (xterm)。
  • 6 -> 稳定条 (xterm)。

颜色可以设置为:

printf '\e]12;%s\a' '颜色'

所以你的灰色稳定块光标可以在那里实现:

printf '\e[2 q\e]12;grey\a'
Run Code Online (Sandbox Code Playgroud)

对于大多数 X11 终端仿真器,您还可以通过命令行选项将光标属性更改为启动仿真器的命令或通过配置文件或 X11 资源或菜单。

例如,对于xterm,您可以-uc/+uc供选择下划线光标-ms它的颜色,和cursorBlinkcursorColorcursorOffTimecursorOnTimecursorUnderLinealwaysHighlight资源配置。

Ctrl+ 左键单击的默认菜单有一个选项可以打开或关闭闪烁。