检测折叠线或增量搜索(?)
Okey,我同意 - 标题是无用的。事情是,我不知道如何把这个放入一个单一的班轮...检测折叠线或增量搜索(?)
我想要做的是映射空间键,使其作为:nohl映射,但在同时,当它在折叠线上时,在正常模式(打开/关闭折叠)下用作za
。
这可能吗?
我遇到的麻烦是两者之间的区别 - 有没有一种方法来“检测”光标下方的折叠线,或检测增量搜索“目前正在进行中”(如,有东西高亮显示)?
还是我以完全错误的方式解决这个问题?欢迎所有的建议!
从Andy Rk重用的想法:
function! FoldSetWithNoHL()
set nohls
if (foldclosed(line('.')) >= 0)
exe "normal za"
endif
endfunction
map <space> :silent! call FoldSetWithNoHL()<cr>
这可能是丑陋,但它的工作对我来说:上展开的线压空当
noremap <Space> :nohl<CR> za
的缺点是错误发生的历史。
结合修复了我在以前的评论中列出的问题:那里似乎
function! ToggleFoldWithNoHL()
if foldlevel('.')
normal! za
endif
endfunction
nnoremap <silent> <space> :nohlsearch<cr>:call ToggleFoldWithNoHL()<cr>
不是一个方法来检测存在活跃搜索突出显示,所以如果您在折叠内部有搜索活动,这将清除搜索,但也关闭折叠。在这种情况下,另一个空间应该让你回到你想要的位置。
请注意,您不需要'执行'。 '正常za'本身(没有引号)的作品,虽然你可能想使用'正常!如果'z'或'za'被重映射到别的东西的话。 – 2012-02-14 16:44:30
谢谢。我的意思是包括'!',但我仍然在学习'执行'等方面的知识。编辑合并。 – codelahoma 2012-02-15 02:59:48
这有一个不幸的副作用,完全关闭搜索突出显示,而不是仅仅清除当前的搜索突出显示。它也打开折叠但不关闭它们。 – codelahoma 2012-02-14 12:46:19