在 Vim 中突出显示文本范围

问题描述 投票:0回答:5

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

vim vi
5个回答
16
投票

开始的基本内容是:

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

它的作用:

  1. 定义具有绿色背景颜色的“绿色”突出显示组。
  2. 定义从第 20 行(包含)到第 30 行(不包含)开始使用“绿色”突出显示组突出显示的语法区域。

现在您可以编写一个函数或/和命令,它采用可视化选择的文本并将多个预定义颜色组之一应用于它。一旦您拥有该功能 - 将其绑定到您的按键:例如 \g 表示绿色,\r 表示红色,

更新:

这里有一些 vim 脚本:

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>

注:

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


5
投票

我相信 Txtfmt 插件就是您正在寻找的......

Txtfmt(Vim 荧光笔)

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

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

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


5
投票

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

Mark:一个小脚本,可以同时用不同的颜色突出显示多个单词。例如,当您浏览大型程序文件时,您可以突出显示一些关键变量。这将使追踪源代码变得更加容易。

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


1
投票

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


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.