突出显示Vim中的文本范围

时间:2009-10-27 20:03:39

标签: vim vi

是否可以在Vim中标记一系列文本并更改其高亮颜色(为红色),而不是选择另一个文本范围并更改该颜色(为绿色)以保留上一个高亮显示等等?

5 个答案:

答案 0 :(得分:13)

开始的基本内容是:

:hi Green guibg=#33ff33
:syntax region Green start=/\%20l/ end=/\%30l/

它的作用:

  1. 使用绿色背景颜色定义“绿色”突出显示组。
  2. 定义语法区域,该区域应突出显示“绿色”突出显示组,从第nr行开始到第30行。
  3. 现在,您可以编写一个函数或/和命令,该函数或/和命令采用可视选择的文本,并将多个预定义颜色组中的一个应用于该文本。一旦你有了这个功能 - 将它绑定到你的键:例如 \ g 表示绿色, \ r 为了红色,

    <强> UPD:

    这里有一些vimscript:

    function! HighlightRegion(color)
      hi Green guibg=#77ff77
      hi Red guibg=#ff7777
      let l_start = line("'<")
      let l_end = line("'>") + 1
      execute 'syntax region '.a:color.' start=/\%'.l_start.'l/ end=/\%'.l_end.'l/'
    endfunction
    
    vnoremap <leader>g :<C-U>call HighlightRegion('Green')<CR>
    vnoremap <leader>r :<C-U>call HighlightRegion('Red')<CR>
    

    注意:

    它无法重新应用突出显示(例如绿色到红色)。

答案 1 :(得分:5)

有一个名为mark的插件/脚本:

  

Mark:一个小脚本,可以同时突出显示不同颜色的几个单词。例如,当您浏览大型程序文件时,可以突出显示一些关键变量。这样可以更轻松地跟踪源代码。

http://www.vim.org/scripts/script.php?script_id=1238

答案 2 :(得分:5)

我相信你正在寻找 Txtfmt 插件......

Txtfmt (The Vim Highlighter)

Txtfmt 为Vim中的纯文本提供了一种“富文本”功能。突出显示是通过直接插入缓冲区的隐藏标记字符完成的,因此突出显示是持久的,无需存储除文件之外的元数据。

Txtfmt具有高度可配置性。默认设置支持8种(可配置的)前景色,8种(可配置的)背景色,以及粗体,下划线和斜体属性的所有组合(例如,粗体,粗体斜体,粗体下划线等等)。非默认配置支持以下附加属性:standout,reverse和undercurl。

有一个非常广泛的帮助文件,作者非常乐意回答使用问题......

答案 3 :(得分:1)

看起来Mark plugin可以满足您的需求。安装完成后,只需进行视觉选择,然后按 \ m

答案 4 :(得分:0)

我不知道有什么方法可以做这样的事情,因为它需要存储与文件的实际内容无关的元数据。即使在Vim运行时它只在内存中,我也不知道如何做到这一点。

并不意味着没有办法,因为我对Vim的了解有限。但这似乎是Vim不会做的事情。