2009-10-27 61 views
4

是否可以在Vim中标记一个文本范围并将其高亮显示颜色(变为红色)比选择另一个范围的文本并将该颜色更改为绿色保持先前的突出显示等等上?在Vim中突出显示文本范围

+0

你到底要干什么? – 2009-10-27 20:13:20

+0

现在我需要它进行日志分析:标记有趣的日志行。但我可以想象很多用例。 – Vereb 2009-10-27 20:23:49

回答

5

相信Txtfmt插件是你在找什么...

Txtfmt (The Vim Highlighter)

Txtfmt提供了一种用于在Vim的纯文本 “格式文本” 的能力。突出显示是通过将隐藏的标记字符直接插入缓冲区来实现的,因此突出显示是持久的,无需存储除文件外的元数据。

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

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

0

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

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

+0

同意。突出显示应用于突出显示组,这是通过匹配文件内容(例如语法突出显示)制作的。文件中必须有*符合要求。 Vim是一个文本编辑器,而不是文字处理器。这就是说,根据你想要的,你可以创建一些自定义的语法高亮和一个基本的标记语言,如果你想。 – Cascabel 2009-10-27 20:13:44

+0

我认为这是一个问题,如果文本更改。但我对仅适用于只读文件的情况感兴趣。首先,我需要它来进行日志文件分析。 – Vereb 2009-10-27 20:15:38

5

有一个插件/脚本调用标记:

马克:一个小脚本同时强调在几个不同颜色的话。例如,当您浏览大型程序文件时,可以突出显示一些关键变量。这将使跟踪源代码变得更容易。

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

+0

我相信这个插件只是一种自动的方式来为您选择/指定的文本创建匹配组。也许这确实是OP想要的,但请注意,它最终会突出显示匹配文本的所有实例,而不仅仅是您选择的特定实例。 – Cascabel 2009-10-27 20:19:45

+0

Ingo Karkat现在正在Mark的工作,因为原作者放弃了它。 https://github.com/vim-scripts/Mark--Karkat – Bodhi 2012-04-10 18:48:03

11

基本的东西,从开始就是:

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

做些什么:

  1. 定义 '绿色' 高亮组用绿色的背景颜色。
  2. 定义应与“绿色”高亮组从线开始NR 20系NR 30

现在可以写一个函数和/或指令这需要在视觉上选定的文本,应用一个被高亮显示区域语法将多个预定义的颜色组分配给它。一旦你的功能 - 它绑定到你的钥匙:例如\ 克绿色,\[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> 

注:

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

+0

这就是我一直在寻找的。伟大的提示。你能再给你的答案增加一件事吗?我怎样才能指定列号码?像从第5行第12列开始一样? – 2012-08-17 02:04:00

+0

如果您不介意,我已经添加了一些我正在寻找的细节。 – 2012-08-17 03:10:19

+2

@SazzadBinKamal在vim中执行':h/\%c'来获取有关vim regexps中列的信息。 – 2013-06-18 12:01:31

1

看起来像Mark plugin做你想做的。安装后,只需进行视觉选择,然后按\m