V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
bramblex
V2EX  ›  Vim

论如何在一个非面对对象的语言中实现模块系统(把 vim 玩成这样我也是奇葩)

  •  2
     
  •   bramblex · 2015-04-18 05:24:05 +08:00 · 2855 次点击
    这是一个创建于 3298 天前的主题,其中的信息可能已经有所发展或是发生改变。

    引:玩过vim的同学都应该知道vim配置文件是很蛋疼,深入点玩过vim的同学大概知道vim的配置文件其实建立在vim自己的脚本语言vimscript(viml)上面的。但是vimscript这个语言真心蛋疼啊,没有emacs大法的lisp好用啊艹。所以没办法,那就自己造造轮子,让vimscript好用写咯。

    因为用着实在蛋疼,然后自己默默地写了一套类似nodejs里面require()的模块机制出来……对,就是用着蛋疼的vimscript,然后为vimscript写的。

    Github: 代码戳这里,求星星

    好了,废话不多说,直接先上效果来看看我的vimrc长啥样。

    ”vimrc
    let base_path = fnamemodify(resolve(expand('<sfile>:p')), ':h')
    exec 'source ' . resolve(base_path . '/require.vimrc')
    
    let config = Require('config')
    let utils = Require('utils')
    
    Require modules
    
    Error: language "VimL" is not supported

    没错我的vimrc就长这样,聪明的你一定看出来了。关键在哪里?Require!然后再看看被Require的 utils 和 moduels 都是啥。

    ”utils/base.vimrc
    call Exports('utils', Require('utils'))
                \('file', Require('file'))
                \('dict', Require('dict'))
                \('man', Require('man'))
    
    Error: language "VimL" is not supported
    ”moduels/base.vimrc
    Require head
    
    Require bundle
    Require hotkeys/base
    Require themes
    Require type
    
    Require tail
    
    Error: language "VimL" is not supported

    如果你没折腾过Vimscript,你看到这东西一定一点都不激动。因为别的语言中都特么是标配的东西,我这里还需要自己实现。真心泪流满面啊TwT。

    Github: 代码戳这里,求星星

    5 条回复    2015-05-29 18:16:23 +08:00
    xiiing
        1
    xiiing  
       2015-04-18 07:19:17 +08:00
    加个星
    vietor
        2
    vietor  
       2015-04-18 08:45:55 +08:00 via Android
    记得在Ubuntu上安装,依赖了Ruby,一生黑
    bramblex
        3
    bramblex  
    OP
       2015-04-18 09:32:48 +08:00
    @xiiing 谢谢猩猩 OwO
    bramblex
        4
    bramblex  
    OP
       2015-04-18 09:33:36 +08:00
    @vietor 依赖Ruby还好,ruby现在也差不多是unix系标配了
    omph
        5
    omph  
       2015-05-29 18:16:23 +08:00
    不明觉厉,星之
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5199 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 09:39 · PVG 17:39 · LAX 02:39 · JFK 05:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.