2016-06-14 46 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>