6

当我使用终端时,我注意到光标与我配置的不同。

换句话说,在 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。我使用 iTerm2xterm-color256作为终端。

重新措辞问题:如何使光标在终端中更快地重绘以及如何使其采用我上面放置的设置?我已经尝试过ttyfastlazyredraw

4

4 回答 4

7

您的设置适用于 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
于 2012-12-25T13:58:03.877 回答
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 以将术语 cursor 更改为 block,这对我来说非常完美。

# change cursor to blinking block
echo -ne "\x1b[1 q"
于 2016-02-25T06:35:15.497 回答
0

你试过这个吗?

:help 'ttyfast'

如果光标有延迟,试试这个(启用ttyfast

:set ttyfast
于 2012-12-25T13:30:57.483 回答
0

使用terminfo

如果在您的机器上出现,您可以使用echo $TERM为Vim 定义光标。linuxterminfo

我们可以通过在 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和重击

要使terminfo普通光标的配置在 Bash 中启动时生效,请将其放入您的.bash_profile

tput cnorm

这样,您在 Vim 和 Bash 中就有相同的光标。

于 2016-12-18T16:26:14.683 回答