Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Colors 插入模式下Vim光标线颜色变化_Colors_Cursor_Line_Vim - Fatal编程技术网

Colors 插入模式下Vim光标线颜色变化

Colors 插入模式下Vim光标线颜色变化,colors,cursor,line,vim,Colors,Cursor,Line,Vim,有一个很好的更改光标颜色的代码段: if &term =~ "xterm\\|rxvt" " use an orange cursor in insert mode let &t_SI = "\<Esc>]12;orange\x7" " use a red cursor otherwise let &t_EI = "\<Esc>]12;red\x7" silent !echo -ne "\033]12;red\007" "

有一个很好的更改光标颜色的代码段:

if &term =~ "xterm\\|rxvt"
  " use an orange cursor in insert mode
  let &t_SI = "\<Esc>]12;orange\x7"
  " use a red cursor otherwise
  let &t_EI = "\<Esc>]12;red\x7"
  silent !echo -ne "\033]12;red\007"
  " reset cursor when vim exits
  autocmd VimLeave * silent !echo -ne "\033]112\007"
  " use \003]12;gray\007 for gnome-terminal
endif
if&term=~“xterm\\\ rxvt”
“在插入模式下使用橙色光标
让&t_-SI=“\]12;橙色\x7“
“否则,请使用红色光标
让&t\u EI=“\]12;红色\x7”
安静!回声-ne“\033]12;红色\007”
“vim退出时重置光标
autocmd VIMLEVE*静音!回声-ne“\033]112\007”
“使用\003]12;灰色\007用于gnome终端
恩迪夫
我应该如何改变它,使光标线代替光标,改变颜色,例如从深蓝色变为蓝色


我的完整配置是

请查看“highlight”命令,这是一种更简单的控制方法

例如,要更改光标线

:hi CursorLine guifg=red guibg=blue
参考::帮助突出显示

使其在模式之间切换

" Enable CursorLine
set cursorline

" Default Colors for CursorLine
highlight  CursorLine ctermbg=Yellow ctermfg=None

" Change Color when entering Insert Mode
autocmd InsertEnter * highlight  CursorLine ctermbg=Green ctermfg=Red

" Revert Color to default when leaving Insert Mode
autocmd InsertLeave * highlight  CursorLine ctermbg=Yellow ctermfg=None

我可能会将termcap颜色与autocmd混合,但在我看来,高光更易于长期维护(如果偶尔使用gVim)

这非常简单,请将以下内容放入您的或自定义文件中

有关更多信息,请参阅:

注意:您可以使用相同的方法更改光标的颜色,而不需要所有这些
if
-语句和转义序列(这也适用于GVim)。

使用MacVim时,您可以设置正常/可见/插入颜色以匹配电源线模式的颜色。我发现这非常有助于在不阅读电源线的情况下了解我所处的模式,尤其是在大屏幕上

以下是我使用的代码,基于@Zarick Lau的答案

在我的
colors/molokai.vim
文件中:

" Visual Mode Orange Background, Black Text
hi Visual          guifg=#000000 guibg=#FD971F

" Default Colors for CursorLine
highlight CursorLine guibg=#3E3D32
highlight Cursor guibg=#A6E22E;

" Change Color when entering Insert Mode
autocmd InsertEnter * highlight  CursorLine guibg=#323D3E
autocmd InsertEnter * highlight  Cursor guibg=#00AAFF;

" Revert Color to default when leaving Insert Mode
autocmd InsertLeave * highlight  CursorLine guibg=#3E3D32
autocmd InsertLeave * highlight  Cursor guibg=#A6E22E;
下面是一个使用molokai原始配色方案的示例

正常

视觉

插入

我还发现,将操作系统设置为使用相同颜色进行视觉选择也很有帮助。例如,我在OSX中将高亮显示颜色更改为
橙色
,当我选择文本时,它现在是橙色而不是蓝色,与VIM中的相同

示例

在这里,当我编写这个堆栈溢出条目时,文本框中使用了橙色高亮显示。现在,我在操作系统中选择的所有文本都与VIM设置相匹配


我选择在插入模式下切换
光标行
正常
。首先使用
:hi Normal
:hi CursorLine
获取值。然后调整以下行:

set cursorline
autocmd InsertEnter * highlight Normal ctermbg=7
autocmd InsertEnter * highlight CursorLine ctermbg=15
autocmd InsertLeave * highlight Normal ctermbg=15
autocmd InsertLeave * highlight CursorLine ctermbg=7
对于日光灯,这看起来像这样。我喜欢“聚焦”效果

即使您进入或离开插入模式,当前行中也没有颜色

“设置光标线
设置无显示模式
“启用游标行
设置nocursorline
“光标线的默认颜色”
hi-CursorLine字符m=NONE字符mbg=NONE字符mfg=NONE
“进入插入模式时更改颜色
autocmd插入器*设置nocursorline
“退出插入模式时,将颜色恢复为默认值
autocmd InsertLeave*设置nocursorline

我喜欢带有注释“使用该死的hjkl键”的arror键映射。我是不是经常在这里写\或者这是^V'ESC'的可视化?当我将上面的文本复制粘贴到我的.vimrc中时,它什么也不做(是的,它声称是一个xterm…它是Linux盒上的putty会话)我知道,我在配置文件中使用了它。重点是我希望它会根据我是否处于插入模式而改变。更新了回复以解决“切换颜色取决于模式”的问题。这是一个非常方便的提示!!谢谢!!要澄清,对于gVim和Neovim,使用
set termguicolors
,您需要使用
guifg
guibg
。对于终端中的Vim和没有真彩色的Neovim,您应该使用
ctermbg
ctermfg
。我不喜欢背景色,所以我将其更改为“autocmd InsertEnter*设置光标行”/“autocmd InsertLeave*设置光标行”“。现在,我只将下划线作为插入或正常模式的指示器。其他有用的示例
cterm=bold
,您可以使用
NONE
来“取消设置”任何内容,例如,我在不处于插入模式时没有突出显示,使用
ctermfg=NONE-ctermbg=NONE-cterm=NONE
知道光标线的“日光化”颜色是什么吗?”。
set cursorline
autocmd InsertEnter * highlight Normal ctermbg=7
autocmd InsertEnter * highlight CursorLine ctermbg=15
autocmd InsertLeave * highlight Normal ctermbg=15
autocmd InsertLeave * highlight CursorLine ctermbg=7