2011-03-24 118 views
2

我經常對我的cscope的索引代碼庫文件之間跳之間切換使用VIM 7和cscope的:使用「cscope的發現F」鍵盤映射裏的文件

:cscope find f <filename> 

我試圖定義一個鍵盤快速防止我不得不每次輸入「:cscope find f」。按下這個快捷方式會彈出一個輸入提示,我將在其中輸入cscope數據庫中文件名的一部分。如果有多個文件,它會顯示文件列表,我可以從中選擇要轉到的文件。到目前爲止,我已經掌握了這一點,但由於我對VIM腳本根本不熟練,因此我無法完成它。 (到目前爲止,我編碼的內容取自另一個問題,歸功於Eelvex)。

有人能幫我糾正下面的腳本嗎? 我得到許多錯誤,而我嘗試使用此快捷方式

function! GetPat() 
    call inputsave() 
    let filename = input("Enter filename: ") 
    call inputrestore() 
    return filename 
endfunction 
map ` :cscope find f '.GetPat().'<CR> 

回答

2

的映射不會等待你輸入輸入,然後繼續。此外,映射錯了,請記住,映射工作,因爲如果你鍵入的文本,你也許可以僥倖逃脫類似的東西使用(未測試):

noremap <expr> ` ':cscope find f '.GetPat()."\<CR>" 

但是,爲什麼不只是:

noremap ` :cscope find f<space> 

這會讓你在最後一個空間準備好進入你的模式之後離開你,然後點擊進入

+0

美在簡單 - 謝謝你提醒我! :) – TCSGrad 2011-03-24 07:02:37

+0

@El Isra:如何在之後等待用戶輸入,只需在光標下搜索詞?如何更改此映射?謝謝 – osager 2011-08-29 14:35:50

+0

@osager:我不使用cscope,所以我不確定以下映射中的哪一個會起作用:'noremap f:cscope find '或'noremap f':cscope find'.expand '')。「\ 」' – Raimondi 2011-08-30 00:04:15