Bexec modified

Bexec可以用来在Vim中直接执行当前窗口中的内容,并输出到另一个窗口中。
Bexec根据以下条件和顺序来决定一个代码的类型:

  1. SheBang
  2. FileType

Bexec先根据SheBang来决定需要调用的解释器的路径,如果没有找到,则直接根据vim内建的filetype变量来查找解释器。

解释器存储于一个全局变量中,她也提供了一个变量用于用户来指定需要调用的解释器。

最近在使用Bexec时遇到了新的问题,无法直接调用bash。原因与vim的内建变量filetype的设置和所使用的操作系统有关。

由于shell script的filetype被设置成了sh,所以Bexec直接根据filetype去找,找到的解释器将是sh,这个解释器可能不是我们想要的,我们可能想要的bash,怎么办呢。vim中filetype的设置,在filetype.vim中进行?查看代码后发现,当发现SheBang包括bash时,将会设置一个b:bash的变量,当此时filetype还是sh。那么我们可以在Bexec中这么修改:

function! <SID>GetInterpreterFromFiletype()
    let l:type = &filetype
    " add the following conditional test
    if l:type == "sh" && exists("b:is_bash") && b:is_bash == 1
        let l:type = "bash"
    endif

    if !has("win32")
        return get(s:interpreters, l:type, -1)
    else
        let idx = index(s:interpreters, l:type)
        if idx != -1
            return s:interpreters[idx]
        endif
        return -1
    endif
endfunction

这样,Bexec在win32上直接会去找bash解释器,这样就ok了。

由于默认的Bexec执行时总是把输出结果窗口放到顶部,所以我修正了这个bug,并且添加了一个可以设置默认窗口高度的选项。

这里是修改过的Bexec.vim

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值