使用MACOSX Terminal.app进入插入模式时如何在VIM中更改光标形状?

时间:2012-08-19 21:47:07

标签: vim terminal xterm

我想在Terminal.app中运行的VIM中进入插入模式时,将光标形状从下划线更改为垂直。 (注意:我知道这是macvim下的默认行为。)

此参考:http://vim.wikia.com/wiki/Change_cursor_shape_in_different_modes提供有关如何执行此操作的说明。例如,以下内容适用于iterm2:

let &t_SI = "\<Esc>]50;CursorShape=1\x7"
let &t_EI = "\<Esc>]50;CursorShape=0\x7"

不幸的是,这不适用于Terminal.app(在Lion下)。

使用Terminal.app是否有任何技巧 - 或者这只是不支持?

3 个答案:

答案 0 :(得分:0)

我绝对肯定我过去曾见过基于Applescript的解决方案,但5分钟的google并没有带来任何好处。这有点野蛮,但似乎有用...... IIRC它动态改变了光标形状偏好,并用autocmd触发。

继续搜索,它在某个地方。

你有什么理由不想使用iTerm吗?

答案 1 :(得分:0)

我自己遇到了类似的问题,发现这个答案有所帮助:

https://superuser.com/questions/712098/customize-vim-cursor-style-under-mac-os-x-terminal

当我开始在tmux中运行vim(仍使用终端)时,更改光标的命令开始工作!

Tmux是一个非常酷的终端管理器,它允许您拥有多个终端窗口,选项卡,分屏,您可以命名,以及保存会话。这是一个很好的教程我曾经安装它并且很有用:

http://fideloper.com/mac-vim-tmux

答案 2 :(得分:0)

OP 在 2012 年 8 月问了这个问题。当时 Terminal.app 不太可能支持将光标形状更改为垂直条的功能,因为 Terminal.app 作为一般规则提供的功能很少xterm。 (未记录的 OSC 6 和 7 是该规则的唯一例外)。

xterm patch #282 大约 6 周后引入了此功能,作为对 DECSCUSR 模拟的扩展:

<块引用>

扩展 DECSCUSR 以提供一种将光标设置为垂直条的方法(Paul Bolle 的补丁)。

记录如下:

CSI Ps SP q
          Set cursor style (DECSCUSR), VT520.
            Ps = 0  ⇒  blinking block.
            Ps = 1  ⇒  blinking block (default).
            Ps = 2  ⇒  steady block.
            Ps = 3  ⇒  blinking underline.
            Ps = 4  ⇒  steady underline.
            Ps = 5  ⇒  blinking bar, xterm.
            Ps = 6  ⇒  steady bar, xterm.

如类似问题(Customize vim cursor style under Mac OS X Terminal,2017 年 7 月)所示,您可以设置 vim 的变量以使用这些转义序列:

let &t_SI="\033[6 q" " start insert mode (steady bar, xterm)
let &t_EI="\033[1 q" " end insert mode