我查看了autocmd可以处理的事件列表,但我找不到有关搜索查询的事件。
我想要做的是在每次执行文本搜索后添加一些自定义行为。我能够使用以下命令重新映射*
命令:
map * *<F11>
在这种情况下,我将<F11>
映射到:call My_function()
,这将对@/
中包含的搜索模式执行某些操作。
但是我仍然需要将自定义行为添加到/
命令中,这比较复杂,因为它已经完成了输入搜索模式。
你对如何进行有任何暗示吗?我可以使用autocmd
吗?或者可能有一个map
技巧?
答案 0 :(得分:1)
(坏)方法是重新映射 return 键(以及 esc 键) 当按下 / 时,就像这样:
function! MyCustomBehaviour()
echo "Oui oui"
endf
function! UnmapSearch()
cunmap <cr>
cunmap <esc>
endf
function! MapSearch()
cnoremap <cr> <cr>:call UnmapSearch()<bar>call MyCustomBehaviour()<cr>
cnoremap <silent> <esc> <c-c>:call UnmapSearch()<cr>
endf
noremap / :<c-u>call MapSearch()<cr>/
这是一个糟糕的方式,因为它非常错误:如果你在编辑时按 Ctrl-C
搜索,它不会取消映射<cr>
和<esc>
,然后您下次进入:
(命令行)模式,
映射仍然有效...这是一个无法解决的问题(<c-c>
无法解决
重新映射)。
这也是一种糟糕的方式,因为以这种方式直接重新映射/
密钥,IMO,不是一个好习惯。
但是......这是我几次解决这个问题的唯一解决办法。
另一种解决方法(我最终选择的方法)可以写成一行:
cnoremap <c-cr> <cr>:call MyCustomBehaviour()<cr>