首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >VIM:为特定目录中的脚本自动添加菜单项

VIM:为特定目录中的脚本自动添加菜单项
EN

Stack Overflow用户
提问于 2009-11-24 20:42:52
回答 2查看 150关注 0票数 0

我从VIM运行了许多脚本(碰巧是Ruby),通过设置启动文件来包含(例如):

代码语言:javascript
运行
复制
amenu Ruby.script1 :%!ruby C:\ruby_scripts\script1.rb<cr><cr>
amenu Ruby.script2 :%!ruby C:\ruby_scripts\script2.rb<cr><cr>
...

我想做的是让VIM自动检查C:\ruby_scripts目录并自动分配菜单项--这能做到吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-11-24 21:46:56

您可以将glob()exe结合使用,如下所示:

代码语言:javascript
运行
复制
let dirname = 'c:/ruby_scripts'
for script in split(glob(dirname . '/*.rb'))
    " Get the script name
    let scriptname = fnamemodify(script, ':t:r')
    let scriptfile = fnamemodify(script, ':p')
    " Add the item to the menu
    exe 'amenu Ruby.' . scriptname . ' :%!ruby ' . scriptfile . '<cr><cr>'
endfor

有关详细信息,请参阅:

代码语言:javascript
运行
复制
:help glob()
:help split()
:help fnamemodify()
:help expand()
:help :exe
票数 1
EN

Stack Overflow用户

发布于 2009-11-24 21:50:58

尝试:

代码语言:javascript
运行
复制
function! s:AddScript(dir, menuname)
  let files = lh#path#GlobAsList(a:dir, "*.rb")
  for f in files
    let n = fnamemodify(f, ":t:r")
    exe "anoremenu ".a:menuname.".".n." :%!ruby ".f."<cr><cr>"
  endfor
endfunction

call s:AddScript("c:/ruby_scripts", "Ruby")

注:lh#path#GlobAsList来自lh-vim-lib。使用替换(),您应该能够将globpath()结果转换为您随后需要执行的字符串。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1789848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档