2012-02-06 110 views
1

在vim中,我想要做的事,像這樣部分vim的命令行映射

function! ModuleFile() 
    let $module = input("Module of file> ") 
    :e **/${module}_ 
endfunction 
map <Leader>e :call ModuleFile()<CR> 

我想到的是,例如,如果我鍵入模塊「ABC」,我會得到這個命令行中VIM:

:e **/ABC_ 

,隨後輸入新的文本,如 「name_of_file」,會得到我:

:e **/ABC_name_of_file 

最後按下Enter將執行該命令。這一點是爲了能夠得到製表符完成。

+0

Uhmm,什麼是「模塊文件」,什麼是應該做的正是這樣的功能? – Rook 2012-02-07 00:36:08

回答

2

在vim腳本中不需要sigils,${...}$var用於環境變量。

function! ModuleFile() 
    let module = input("Module of file> ") 
    let name = input("Search pattern> ") 
    execute 'args **/' . module . '_' . name 
endfunction 
map <Leader>e :call ModuleFile()<CR> 

您的評論後,你想要的東西可能是:

map <leader>e :args **/<c-r>=input("Module of file: ") . '_' . input("Search pattern: ")<cr> 
+0

我想讓它離開我的指揮線。因此,在按 e之後,例如ABC爲模塊和圖形爲搜索模式,然後輸入「abcdefg 」後綴,我想要執行以下命令: ':e **/ABC_Graphicsabcdefg' – solinent 2012-02-21 21:09:50

+0

@solinent:回答。應該符合你的標準。 – Benoit 2012-02-21 22:19:08