我注意到当我使用终端时光标不是我配置它。
换句话说,在GUI中它看起来很完美,光标就是,但在终端中需要时间来更新,它看起来不像我配置它等。
以下是我对光标的设置:
set guicursor=n-v-c:block-Cursor-blinkon0
set guicursor+=ve:ver35-Cursor
set guicursor+=o:hor50-Cursor-blinkwait175-blinkoff150-blinkon175
set guicursor+=i-ci:ver20-Cursor
set guicursor+=r-cr:hor20-Cursor
set guicursor+=sm:block-Cursor-blinkwait175-blinkoff150-blinkon175
我注意到它被称为guicursor
设置,但是在终端中,其中一些确实生效了,它们只是没有完全生效。
此外,似乎光标没有得到很多更新。例如,如果我进入插入模式,则放置正确的光标,但如果我离开,则使用相同的光标,直到我移动或其他东西然后更新为正常模式光标。
你对此有什么建议吗?或者我只需忍受它?
修改
我的操作系统是安装了Mountain Lion的Mac Mini。我使用iTerm2和xterm-color256
作为终端。
重新措辞问题:如何在终端中更快地重绘光标,如何才能使其采用上面的设置?我已经尝试过ttyfast
和lazyredraw
。
答案 0 :(得分:6)
您的设置适用于GUI Vim。您不能期望它们在CLI Vim中工作。如果您不喜欢CLI Vim的工作方式,请使用MacVim。
我在~/.vimrc
:
" changes the cursor shape/color
" in the terminal depending on the mode
" see http://code.google.com/p/iterm2/issues/detail?id=710&q=cursor
function! SetCursorStyle()
if &term =~ "xterm\\|rxvt"
" use a | cursor in insert mode
let &t_SI = "\<Esc>]50;CursorShape=1\x7"
" use a rectangle cursor otherwise
let &t_EI = "\<Esc>]50;CursorShape=0\x7"
" reset cursor when vim exits
autocmd VimLeave * silent !echo -ne "\<Esc>]50;CursorShape=0\x7"
endif
endfunction
答案 1 :(得分:1)
我使用Cygwin,我使用上面的设置,但Cygwin的xterm可能无法识别“\] 50; CursorShape = 1 \ x7”
所以我试试这个,它可以工作
if &term =~ "xterm\\|rxvt"
" use a | cursor in insert mode
let &t_SI = "\<Esc>[5 q"
" use a rectangle cursor otherwise
let &t_EI = "\<Esc>[1 q"
endif
然后,我将此添加到.bashrc中将术语光标更改为阻止,这对我来说非常完美。
# change cursor to blinking block
echo -ne "\x1b[1 q"
答案 2 :(得分:0)
你试过这个吗?
:help 'ttyfast'
如果光标有延迟,请尝试此操作(启用ttyfast
:
:set ttyfast
答案 3 :(得分:0)
terminfo
如果echo $TERM
在您的计算机上提供linux
,您可以使用terminfo
为Vim定义光标。
我们可以通过在terminfo数据库中更改它来设置游标:
infocmp -A /usr/share/terminfo linux > linux_terminfo
然后使用您喜欢的编辑器编辑linux_terminfo
; cnorm
条目是普通光标的条目。这会将光标设置为不闪烁的绿色矩形:
clear=\E[H\E[J, cnorm=\E[?25h\E[?48;0;32c, cr=^M,
将更改写回terminfo
数据库:
tic linux_terminfo
然后,一旦你用Vim打开一个文件,你就会看到新光标。
terminfo
的颜色 c
之前的数字(例如32c
)定义了光标的颜色。光标背景颜色以16为增量更改。要使光标下的字符突出显示,请在数字上添加8。例如:16给出一个蓝色光标而不突出显示光标下的字符。要激活突出显示,请在数字中添加8:24
初步颜色列表:
0 → gray
16 → blue
32 → green
48 → cyan
64 → red
80 → magenta
96 → brown
112 → gray
128 → ivory
144 → light blue
160 → lime
176 → light cyan
194 → pale red
212 → pink
228 → yellow
...
terminfo
和Bash 要使正常光标的terminfo
配置在Bash启动时生效,请将其放在.bash_profile
中:
tput cnorm
这样,你在Vim和Bash中拥有相同的光标。