如何在 Gnome 终端上的控制台 Vim 中基于正常或插入模式使光标从细线变为块

Jer*_*lim 10 vim gnome-terminal cursor

我正在从 Gvim 切换到使用 Gnome 终端 2.32.1 的控制台 Vim。

我真的很喜欢在 Gvim 中光标在正常模式下是一个实心方块,而在插入模式下是细线。

  • 在 Gnome 终端中运行控制台 Vim 时,有没有办法产生此功能?

  • 如果不可能,有什么技巧可以知道你处于什么模式?我知道屏幕底部显示了模式,但这似乎没有光标有用(这是我的眼睛看的地方)。或者你只是通过练习来习惯它?

Ash*_*Ash 7

不需要为此使用自动命令或 gconftool - Vim 现在本身就支持它。

将以下行插入您的 vimrc:

let &t_SI = "\<esc>[5 q"  " blinking I-beam in insert mode
let &t_SR = "\<esc>[3 q"  " blinking underline in replace mode
let &t_EI = "\<esc>[ q"  " default cursor (usually blinking block) otherwise
Run Code Online (Sandbox Code Playgroud)

自 2014 年底发布的 VTE 0.39 版以及 xterm 以来,这些序列应该适用于所有基于 VTE 的终端仿真器。如果您想停止光标闪烁,请为每个数字加一个,然后将 a2插入序列中t_EI此答案中列出了可能的序列;另请参阅VT510 手册)。


enz*_*tib 6

对于 gnome-terminal,将其添加到您的~/.vimrc(如果缺少则创建):

if has("autocmd")
  au InsertEnter * silent execute "!gconftool-2 --type string --set /apps/gnome-terminal/profiles/Default/cursor_shape ibeam"
  au InsertLeave * silent execute "!gconftool-2 --type string --set /apps/gnome-terminal/profiles/Default/cursor_shape block"
  au VimLeave * silent execute "!gconftool-2 --type string --set /apps/gnome-terminal/profiles/Default/cursor_shape ibeam"
endif
Run Code Online (Sandbox Code Playgroud)

在这里找到:在不同模式下更改光标形状

编辑

将最后一个更改ibeamblock, 以离开块光标。

  • 我想文章中提到的主要问题是这个设置是系统范围的,而不是特定于一个 Vim 会话。因此,任何外部控制台都会受到影响。 (2认同)