如何在 .vimrc 中突出显示当前行和光标?

Big*_*uge 17 vim vimrc

我试图在 Vim 中突出显示当前行以及光标位置。这是我的 .vimrc:

set cursorline
hi CursorLine ctermbg=8 ctermfg=15 "8 = dark gray, 15 = white
hi Cursor ctermbg=15 ctermfg=8
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是当前行背景颜色覆盖了光标背景颜色,所以它看起来像这样:

当前行突出显示,但光标没有突出显示。

我可以清楚地知道光标在哪里,因为前景色几乎是黑色的,但是当光标在一个空格上或在一行的开头/结尾时,除非我移动它,否则我不知道它在哪里。

光标位于行尾,但您永远不会知道。

我在这里做错了什么?

小智 15

您必须将光标线的颜色更改为光标颜色以外的颜色。如果你在像st或那样的终端模拟器中rxvt,Vim 不能改变你光标的颜色;它始终是您的终端应用程序决定使用的颜色。只有 Vim 的图形版本能够改变光标的颜色。

不过,您可以通过终端配置更改光标颜色。

一些~/.Xdefaults/~/.Xresources例子:

XTerm*cursorColor: #FFFFFF
URxvt.cursorColor: white
Run Code Online (Sandbox Code Playgroud)

您还可以使用 Vim 命令:set cursorcolumn将光标置于十字准线中。

  • `vim` 可以更改光标颜色,在像 `xterm` 这样的终端上,允许您动态更改它(例如 `printf '\033]12;#f50\7'`)。您也可以将其更改为闪烁块或下划线(`\e[1 q` 或 `\e[3 q`) (4认同)

小智 8

如果不想在每次启动 Vim 时都输入命令,则必须将命令放入.vimrc文件中。

whereis vim    
*#type in your linux terminal* 
Run Code Online (Sandbox Code Playgroud)

(你会有一个不同的位置,但你的配色方案会在这里/usr/share/vim/vim74/colors/

您可以列出现有的配色方案

ls /usr/share/vim/vim74/colors/    
Run Code Online (Sandbox Code Playgroud)

尝试列出的不同配色方案

:colorscheme desert
:colorscheme delek
Run Code Online (Sandbox Code Playgroud)

Vim 中的以下命令在光标位置激活一条垂直线。

set cursorcolumn 
hi CursorColumn ctermbg=8
Run Code Online (Sandbox Code Playgroud)

切换(带有感叹号,适用于所有设置命令)

set cursorcolumn!
Run Code Online (Sandbox Code Playgroud)

例如:

set cursorline
set cursorline!

hi CursorLine ctermbg=235
*#defines a gray colour for the horizontal line*
Run Code Online (Sandbox Code Playgroud)

这是一个带有 xterm 颜色的表格:链接

通过定义使用数字ctermbg=... (... = 表中的颜色编号) 您也可以尝试ctermfg=...,但不值得使用它。