添加和删​​除 vim 解释器的目录ߣ导入路径

发布于 2024-10-21 20:47:51 字数 1209 浏览 1 评论 0 原文

以下代码的 mzscheme 等效项是什么?

  • 蟒蛇:

    python 导入 sys, vim
    python sys.path.append(vim.eval("var"))
    <...>
    python sys.path.remove(vim.eval("var"))
    
  • perl:

    perl push @INC, [VIM::Eval("var")]->[1];
    <...>
    perl @INC=(grep {$_ ne VIM::Eval("var")} @INC);
    
  • lua:

    let str=';'.var.'/?.lua;'.var.'/?/init.lua'
    lua package.path=package.path..vim.eval("str")
    <...>
    让 ppath=[]
    lua vim.eval("add(ppath,"..string.format("%q", package.path)..")")
    让 importidx=stridx(ppath[0], str)
    让 importendidx=importidx+len(str)
    让 ppath[0]=((importidx>0)?(ppath[0][:(importidx-1)]):(""))。
                \ppath[0][(importendidx+1):]
    lua package.path=vim.eval("ppath[0]")
    
  • 红宝石:

    ruby $LOAD_PATH << VIM::评估(“var”)
    <...>
    红宝石 $LOAD_PATH.delete(VIM::evaluate("var"))
    
  • tcl:

    silent tcl lappend auto_path [::vim::expr "dir"]
    <...>
    静默 tcl 设置 auto_path
                \ [l替换 $auto_path
                \ {*}[l重复 2
                \ [lsearch -exact $auto_path
                \ [::vim::expr "a:fdict.imported"]]]]
    

What is the mzscheme equivalent of the following codes?

  • python:

    python import sys, vim
    python sys.path.append(vim.eval("var"))
    <...>
    python sys.path.remove(vim.eval("var"))
    
  • perl:

    perl push @INC, [VIM::Eval("var")]->[1];
    <...>
    perl @INC=(grep {$_ ne VIM::Eval("var")} @INC);
    
  • lua:

    let str=';'.var.'/?.lua;'.var.'/?/init.lua'
    lua package.path=package.path..vim.eval("str")
    <...>
    let ppath=[]
    lua vim.eval("add(ppath,"..string.format("%q", package.path)..")")
    let importidx=stridx(ppath[0], str)
    let importendidx=importidx+len(str)
    let ppath[0]=((importidx>0)?(ppath[0][:(importidx-1)]):("")).
                \ppath[0][(importendidx+1):]
    lua package.path=vim.eval("ppath[0]")
    
  • ruby:

    ruby $LOAD_PATH << VIM::evaluate("var")
    <...>
    ruby $LOAD_PATH.delete(VIM::evaluate("var"))
    
  • tcl:

    silent tcl lappend auto_path [::vim::expr "dir"]
    <...>
    silent tcl set auto_path
                \ [lreplace $auto_path
                \ {*}[lrepeat 2
                \ [lsearch -exact $auto_path
                \ [::vim::expr "a:fdict.imported"]]]]
    

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

ゝ偶尔ゞ 2024-10-28 20:47:51

这取决于您想用脚本做什么。 Racket(它已经很长时间没有被称为“mzscheme”了)与模块一起工作,所以你很少使用“将路径添加到动态加载路径”类型的工作流程。相反,模块是使用 require 形式从库的核心集合或您已安装的包中导入的。

如果您确实需要动态加载内容,一种选择是设置current-directory 参数,然后使用 动态要求

(require (prefix-in vim- vimext))
(parameterize ([current-directory (vim-eval "var")])
  (define add (dynamic-require "add.rkt" 'add)))

dynamic-require 将从提供的目录中的 add.rkt 文件中提取 add 函数。注意:我还没有测试过这段代码,因为我找不到编译了 Racket 支持的 vim 版本。

您可以在 Racket 此处。 Racket 的一般文档此处

That depends on what you want to do with your script. Racket (it hasn't been called "mzscheme" for a long time now) works with modules, so you rarely use the "add a path to a dynamic load path" kind of workflow. Instead, modules are imported using the require form from either the core collection of libraries or from packages you've installed.

If you really need to load things dynamically, one option is to set the current-directory parameter and then use dynamic-require.

(require (prefix-in vim- vimext))
(parameterize ([current-directory (vim-eval "var")])
  (define add (dynamic-require "add.rkt" 'add)))

The dynamic-require will pull out the add function from the add.rkt file in the supplied directory. Note: I haven't tested this code since I can't find a version of vim that has Racket support compiled in.

You can find the documentation for the vim interface in Racket here. General documentation for Racket here.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文