突出显示VIM中的任意行

时间:2016-04-23 16:36:32

标签: vim syntax-highlighting highlight

在程序的实现过程中,我通常会插入许多追加代码行,主要是使用print命令,以帮助我理解和调试已实现的程序。不幸的是,我常常忘记代码中的哪些行和附加的行,并且应该在之后的某个时间删除。大型程序会使这个问题变得更糟。

好吧,我发现这个article教会了如何保持一个任意用户选中的行突出显示(参见:突出显示光标移动后)。本文给出的解决方案是在.vimrc中包含以下代码:

:nnoremap <silent> <Leader>l ml:execute 'match Search /\%'.line('.').'l/'<CR>

因此,每当我按 \ l 时,当前行会突出显示并保持不变,并且前一个突出显示的行(如果有的话)不会突出显示。

这不是我想要的行为。相反,我希望能够突出显示任意数量的任意行,而不会突出显示前面突出显示的行。如果可能,使用 \ l 等唯一命令。

有人知道这方面的解决方案吗?

提前致谢。

EDITED

yolenoyer提出的命令解决了最初的问题。但是,现在提出了其他问题。以下命令:

:call clearmatches()

建议清理突出显示的线条清除所有线条,我希望能够清除特定的突出显示的线条,而不是立即清除所有线条。有可能吗?

3 个答案:

答案 0 :(得分:2)

:match只接受一场比赛。

请改用matchadd({highlight-group}, {pattern})功能,例如:

nnoremap <silent> <leader>l :call matchadd('Search', '\%'.line('.').'l')<cr>

要清除您添加的匹配项,请运行:call clearmatches()

答案 1 :(得分:2)

我在C中编程非常多,并且在调试时倾向于使用调试打印来编写代码。

我使用vim命令

:syntax match Error /\<debug_printf\>/

确保单词'debug_printf'以特定colorscheme的默认'Error'颜色突出显示。

这不会帮助您为一系列行添加书签,但为此您应该查看“书签”插件,该插件允许您在整个文件中创建和删除书签。

VIM Bookmarks Plugin

答案 2 :(得分:0)

我认为你的第一段解释了你的问题,与vim无关,所以也许你不需要使用vim来解决你的问题。

使用常规打印语句进行调试,但是使用包装打印的功能呢?这对于搜索程序范围和文件范围来说非常容易(只需使用*#搜索所有出现的调试打印功能)。