首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改命令行中的游标

问更改命令行中的游标
EN

Stack Overflow用户
提问于 2020-06-04 17:01:14
回答 2查看 365关注 0票数 1

当进入Vim命令行时,我试图将光标从块更改为垂直栏(I-beam)。

我试着用这个单独的密码:

代码语言:javascript
复制
" with these two codes nothing happens
autocmd CmdlineEnter * let &t_SI
autocmd CmdlineEnter * execute &t_SI

" this last one  produce "E20: Mark not set" error
autocmd CmdlineEnter * execute '!echo -ne "' . &t_SI . '"'

是这样的,甚至可能,或者vim对cmd行使用相同的光标,就像它在正常模式下使用的一样。

我已经将普通模式(&t_EI)更改为垂直栏,在这种情况下,光标是cmd行中的垂直条。

是否可以在cmd行中改变光标的正常模式?

有人能帮忙吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-11-20 12:00:34

在Vim 8.2.0258或更高版本中,可以使用echoraw()函数。

代码语言:javascript
复制
autocmd CmdlineEnter * call echoraw(&t_SI)
autocmd CmdlineLeave * call echoraw(&t_EI)
票数 1
EN

Stack Overflow用户

发布于 2020-06-06 23:14:24

我找到解决办法了。

结果表明,在输入和离开cmd行时,可以更改光标。

此代码将在进入cmd行时将光标更改为垂直条,并在离开cmd行时将其还原为阻塞。

代码语言:javascript
复制
" vim cursor escape codes for the terminal emulator
" INSERT (&t_SI)  - vertical bar (I-beam)
" REPLACE (&t_SR) - underscore
" VISUAL (&t_EI)  - block
let &t_SI = "\<Esc>[5 q"
let &t_SR = "\<Esc>[3 q"
let &t_EI = "\<Esc>[1 q"

" set cursor to vertical bar when entering cmd line and
" revert cursor back to block when leaving cmd line
autocmd CmdlineEnter * execute 'silent !echo -ne "' . &t_SI . '"'
autocmd CmdlineLeave * execute 'silent !echo -ne "' . &t_EI . '"'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62200208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档