配置 linux + vim + vala 开发环境

配置 linux + vim + vala 开发环境

  • vim8

  • 你需要先了解的知识

    • Language Server Protocol - 语言服务器协议,简称 lsp

      简单的说,就是原来只有 IDE 才支持的 自动补全、查找、格式化等功能,现在被抽离出来,拆分成语言服务器的和客户端, 中间通过协议进行通讯。只要我们的 IDE 或文本编辑器支持 lsp 客户端,那么就能使用这些功能了。即然是 cs 架构, 那我们要做的事情就很清楚了:配置 lsp 客户端、构建语言服务器、调用语言服务器

    • vim-plug - vim 插件管理器

      vim 的插件管理器。网上很多博客,这里就不再赘述了。

    • meson - 新的构建系统

      功能和 cmake 差不多,但是构建速度更快,语法也更加规范。

    • git - 非常流行的版本控制系统

    一、配置 lsp 客户端

    这里我们用至 vim-lsp 插件, 其实还有其它插件可供选择,但是这个插件使用起来比较简单

    " lsp 及相关插件
    Plug "prabirshrestha/async.vim"
    Plug "prabirshrestha/vim-lsp"
    Plug "thomasfaingnaert/vim-lsp-snippets"
    Plug "thomasfaingnaert/vim-lsp-ultisnips"
    
    " 自动补全插件 
    Plug "prabirshrestha/asyncomplete.vim"
    Plug "prabirshrestha/asyncomplete-lsp.vim"
    Plug "ajh17/vimcompletesme"
    
    " vala 语法高亮插件
    Plug "arrufat/vala.vim"
    

    接下来 :PlugInstall 进行安装

    二、构建语言服务器

    vala 语言服务器其实也有几种可供选择,这里使用 vala-language-server

    依赖

    • glib-2.0
    • gobject-2.0
    • gio-2.0
    • gee-0.8
    • jsonrpc-glib-1.0
    • libvala-0.48

    如果你的系统没有安装这些库,需要先安装它们。

    克隆

    git clone https://github.com/benwaffle/vala-language-server.git
    

    构建

    进入文件夹

    meson build
    ninja -C build
    

    编译完成之后,把 build 文件夹中的 vala-language-server(这个就是我们构建好的语言服务器了) 复制到 ~/.local/bin

    三、调用语言服务器

    在 .vimrc 中添加如下信息

    if executable("vala-language-server")
      au User lsp_setup call lsp#register_server({
             "name": "vala-language-server",
             "cmd": {server_info->[&shell, &shellcmdflag, "vala-language-server"]},
             "whitelist": ["vala"],
             })
    

    重新加载 .vimrc。现在我们只需要打开 vala 源文件,就可以使用 vala-language-server 的功能了。

    vala-language-server 和 pkg-config 配合使用

    在类 unix 环境中,我们经常使用到 pkg-config。vala-language-server 怎么识别 pkg-config 信息呢? 我们只需要配置好 meson.build,然后执行下 meson.build,如果没有报告,vala-language-server 就能正常识别了。

    最后

    vala-language-server 目前还在快速开发中,功能尚不完善,依赖也随时可能会发生变化,如果你发现构建不过了, 请点击链接,按照官方教程进行构建。