在程序的实现过程中,我通常会插入许多追加代码行,主要是使用print命令,以帮助我理解和调试已实现的程序。不幸的是,我常常忘记代码中的哪些行和附加的行,并且应该在之后的某个时间删除。大型程序会使这个问题变得更糟。
好吧,我发现这个article教会了如何保持一个任意用户选中的行突出显示(参见:突出显示光标移动后)。本文给出的解决方案是在.vimrc中包含以下代码:
:nnoremap <silent> <Leader>l ml:execute 'match Search /\%'.line('.').'l/'<CR>
因此,每当我按 \ l 时,当前行会突出显示并保持不变,并且前一个突出显示的行(如果有的话)不会突出显示。
这不是我想要的行为。相反,我希望能够突出显示任意数量的任意行,而不会突出显示前面突出显示的行。如果可能,使用 \ l 等唯一命令。
有人知道这方面的解决方案吗?
提前致谢。
EDITED :
yolenoyer提出的命令解决了最初的问题。但是,现在提出了其他问题。以下命令:
:call clearmatches()
建议清理突出显示的线条清除所有线条,我希望能够清除特定的突出显示的线条,而不是立即清除所有线条。有可能吗?
答案 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'颜色突出显示。
这不会帮助您为一系列行添加书签,但为此您应该查看“书签”插件,该插件允许您在整个文件中创建和删除书签。
答案 2 :(得分:0)
我认为你的第一段解释了你的问题,与vim无关,所以也许你不需要使用vim来解决你的问题。
使用常规打印语句进行不调试,但是使用包装打印的功能呢?这对于搜索程序范围和文件范围来说非常容易(只需使用*
或#
搜索所有出现的调试打印功能)。