部分vim命令行映射

时间:2012-02-06 21:37:58

标签: 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键将执行该命令。这一点是为了能够获得标签完成。

1 个答案:

答案 0 :(得分: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>