2016-06-14 68 views
0

我看了一下autocmd可以处理的事件列表,但是我找不到有关搜索查询的事件。在文本中执行搜索后vim autocmd挂钩?

我想要做的是在每次执行文本搜索后添加一些自定义行为。我可以用这个命令来重新映射*命令:

map * *<F11> 

在这种情况下,我映射<F11>:call My_function()将做与包含在@/搜索模式的东西。

但我仍然需要将我的自定义行为添加到/命令中,这个过程比较复杂,因为它在完成之前会获得输入搜索模式。

你有任何提示如何进行?我可以使用autocmd吗?或者也许有一个map诡计?

+0

更多解释,请用一个例子 – SibiCoder

+0

只是增加了一些更多的上下文;进一步的细节将侧重跟踪其他细节 – fstab

+0

什么样的自定义行为?如果你没有隐藏,我可以告诉它一个答案:D – SibiCoder

回答

1

的(坏)的方式来做到这将是重新映射回报键(和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而编辑 搜索,它不会unmap <cr><esc>,然后下一次,你会输入:(comman D线)模式下, 映射仍然是活动的...这是一个无法解决的问题(<c-c>不能被 重新映射)。

这也是一个不好的方法,因为直接重新映射/键,IMO不是一个好的做法。

但是......这是我前几次发现的解决此问题的唯一解决方案。

另一个解决方法(一个我最终选择)可以写在一行:

cnoremap <c-cr> <cr>:call MyCustomBehaviour()<cr>