我要做的是映射空格键,使其作为:nohl 映射,但同时,当它在折叠的行上时,作为正常模式下的za
(打开/关闭折叠)。
这甚至可能吗?
我遇到的问题是区分两者 - 有没有办法“检测”光标下方的折叠线,或检测“正在进行中”的增量搜索(如有,突出显示) ?
或者我是以完全错误的方式解决这个问题?欢迎所有的建议!
答案 0 :(得分:2)
这可能很难看,但它对我有用:
noremap <Space> :nohl<CR> za
缺点是在展开的线条上按空格时会发生错误。
答案 1 :(得分:2)
重用Andy Rk的想法:
function! FoldSetWithNoHL()
set nohls
if (foldclosed(line('.')) >= 0)
exe "normal za"
endif
endfunction
map <space> :silent! call FoldSetWithNoHL()<cr>
答案 2 :(得分:1)
将修复程序纳入我之前评论中列出的问题:
function! ToggleFoldWithNoHL()
if foldlevel('.')
normal! za
endif
endfunction
nnoremap <silent> <space> :nohlsearch<cr>:call ToggleFoldWithNoHL()<cr>
似乎没有办法检测到有活跃的搜索突出显示,因此如果您在折叠中有活动的搜索,这将清除搜索但也关闭折叠。在这种情况下,另一个空间应该让你回到你想要的地方。