论如何在一个非面对对象的语言中实现模块系统(把 vim 玩成这样我也是奇葩) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
bramblex
V2EX    Vim

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

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

    引:玩过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     Solana     3313 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 04:51 PVG 12:51 LAX 20:51 JFK 23:51
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86