SwiftForVim

快速、类型安全,且拥有 Swift 强大功能的 Vim 插件!

SwiftForVim 将 Swift 编程语言集成到 Vim 中。

Vim API

Vim

Vimscript <-> Swift

从 Swift 调用 Vim 命令

Vim.command("echo 'Hello World!'")

从 Swift 评估 Vim 表达式

let path = String(Vim.eval("expand('%:p')"))

从 Vim 调用 Swift 函数

VimPlugin.setCallable("cursorMoved") {
    _ in
    print("The cursor moved")
}

// Off in VimScript
call s:SwiftVimEval("MyAwesomePlugin.invoke('cursorMoved')")

VimAsync

Vim 的线程和异步支持

DispatchQueue.async {
    // Do some work
    VimTask.onMain {
        Vim.command("echo 'Hello World! on the main thread.'")
    }
}

注意:VimAsync 依赖于 Foundation 框架。对于基本的、单线程插件来说,它不是必需的。

用法

首先,生成一个 Vim 插件设置以使用 Swift。

git clone https://github.com/swift-vim/SwiftForVim.git
cd SwiftForVim
plugin_path=/path/to/MyAwesomePlugin make generate

然后,构建插件。

cd /path/to/MyAwesomePlugin
make

最后,设置插件(VimPlug、Pathogen 等)。

设计目标

便携、快速且易于使用。

它不需要重新编译 Vim 或 Swift 语言的自定义分支。

为什么?

Swift 使构建快速、类型安全、易于调试和部署的程序变得容易。

示例

源代码树包含一个非常基础的示例和测试用例。

SwiftPackageManger.vim 是典型的用例,并使用 VimAsync 在 vim 内部运行自定义 RPC 服务。