设置quickx的vim开发环境

设置quickx的vim开发环境

在 MacOS 上搭建 cocos2d-x / quick-x 的 vim 开发环境
我的 Vim 环境设置,请参考:http://localhost:4000/work/2014/06/16/vim-revamp/

Lua 环境

Vim 对 Lua 的支持
Vim 的 Lua 支持,我所找到的有:https://github.com/xolox/vim-lua-ftplugin, https://github.com/vim-scripts/lua-support
试用下来, lua.vim 非常好,该有的功能都有了,可以支持 lua 的代码库自定义,而且这个插件的 viml 写得好,不用深钻脑洞, 就它了。
在 _vimrc 中加入配置如下:
Plugin ‘xolox/vim-misc’ " required by lua.vimPlugin ‘xolox/vim-lua-ftplugin’ " Lua file type plug-in
for the Vim text editor这样,在 vim 中执行 BundleInstall 之后,对 lua 的语法高亮,自动格式化,基本库的自动补完就都有了。

Vim 对 quick-x 的 lua framework 的支持 (keywords)
lua.vim 支持环境变量 https://github.com/xolox/vim-lua-ftplugin/issues/24 另一方面,quick-x 的安装会自动在 .bash_profile 中增加QUICK_COCOS2DX_ROOT 环境变量, 因此,通过在 .bash_profile 通过以下脚本可以生成支持 quick-x 的 LUA_PATH 环境变量来:
# add cocos2d-x related lua files into LUA_PATH
if ! -z “QUICK_COCOS2DX_ROOT" ]]; then export LUA_PATH="{QUICK_COCOS2DX_ROOT}/framework/?.lua;${LUA_PATH}”
fi这样,在重新启动 vim 后,就能够自动补完 quick-x API 了

quick-x 代码模板 (snippets)
我使用 SnipMate + AutoComplPop 这两个插件来实现 Vim 中的代码模板, 基于 Dualface 的 https://github.com/dualface/luadocx 工具, 我写了一个简单的https://github.com/yi/luadocx#json2snippetcoffee 来生成 https://gist.github.com/yi/5dcf8d51242d7d59b4b1
用起来是图中这样滴:

缺憾
目前的这套支持配置最大的缺憾是代码模板的便捷性。由于 AutoComplPop 是一个 VimL 实现,所以为了避免卡顿, AutoComplPop 只有在输入大写字符时才会调用 SnipMate。而且匹配到的候选项是不会跟随输入进展而进一步过滤。 这在同起始字母中选中候选的代码片段带来了一些不便。
我想一个更优化的方式是做一个基于 http://valloric.github.io/YouCompleteMe/ 的代码补完和片断模板的实现。 YouCompleteMe 是一个 C/S 结构,Vim 客户端只负责做输入触发,而候选词是由服务器端计算提供的。这个结构非常类似于 jQuery Ajax Suggestions。 这种结构可以使客户端Vim 拥有无限量的补完可扩展性,同时不会遇到输入卡顿。 可惜目前的 YouCompleteMe 对于 Lua 的支持还是使用 Vim 自带的 OminComplete 模块,而且目前 YouCompleteMe 对 Vim 的客户端版本要求过高,需要进行 +Python 编译。 这些问题都造成启用壁垒。还不便于在我们现在的团队情况下推广。

原文地址:http://yi.github.io/work/2014/06/20/在MacOS上设置quickx和cocos2dx的Vim开发环境

谢谢,好文章

虽然我没用vim

希望对使用vim 的同学所有帮助

辛苦!

谢谢,好文章

虽然我没用vim

hahah----我也没用Vim sublime足以

我靠,虽然我已经不用 vim 好多年。但是看了这篇文章,我决定再搞一把 vim。

现在vim用的很少了。

这个帖子里面的 .bash_profile 的 LUA_PATH 配置设计不好,会冲掉 lua 的 packange.path

所以我改了一下,详细写在这里:http://yi.github.io/work/2014/06/28/修正LUA_PATH导致luac编译失败的问题


http://yi.github.io/work/2014/06/28/修正LUA_PATH导致luac编译失败的问题

遇到的问题:

在执行 quick-x 的打包 framework 的脚本 bin/make_framework_package.sh 的时候,执行失败,遇到以下错误
Compile Lua source files
in path /Users/ty/workspaces/quick-cocos2d-x/frameworkluajit: unknown luaJIT command or jit.* modules not installedERR: cannot compile file /Users/ty/workspaces/quick-cocos2d-x/framework/api/Context.lua
造成的原因
google 了 lua-users 之后了解到这个情况是由于 lua 的 vm 无法在运行时知道所依赖的模块。造成这个问题的原因 是我在 中导出了全局变量 LUA_PATH, 当系统存在 LUA_PATH 这个全局变量时,lua 的 package.path 会自动使用这个全局变量, 所以原来的 pakcage.path 就背冲掉了。
有谁知道怎么样能够把自定义路径添加到 lua 的 package.path 中去呢?

解决的方法
现在我设定 LUA_PATH 的目的是为了在 VIM 中使用 quick-x 的代码补完和片断模板,所以只要让这个变量在 vim 中生效,而不是 bash 全局生效即可解决问题。
所以修改 .bash_profile 如下:
# NOTE: cocos2d-x-v3 中的 lua 接口文件在 lua.vim 的扫描时报错,所以我拿出来到 .vim/lua 目录下,做二次加工VIM_LUA_PATH="(echo `cd ~/.vim/lua/cocos2d-x-v3/ && pwd`)/?.lua;{VIM_LUA_PATH}"# NOTE: 我发现还是不能轻易的使用系统全局变量 LUA_PATH,因为这会把 lua 的 package.path 冲掉。**# 导致 luajit 编译不工作。所以我拿出来放到 vim 的执行之前,作为传入变量
if ! -z “VIM_LUA_PATH" ]]; then VI="(echo which vim)” alias vi=“LUA_PATH=”{VIM_LUA_PATH}\" {VI}" alias vim=“LUA_PATH=”{VIM_LUA_PATH}\" {VI}" VI="(echo `which mvim`)" alias mvim="LUA_PATH=\"{VIM_LUA_PATH}" ${VI}"
fi

谁说的啊。linux开发的大半还是vim啊。

不好意思 我是说我用的好少了 :12::12::12::12:

一直是啥也没配直接裸奔lua……

我这是糟蹋了Vim……

楼主的图都看不了啊看不了

自动补全经常报错:“lua.vim 0.7.24: Failed to get package.cpath from external Lua interpreter: Vim(let):E684: list index out of range: 0”,不知道是因为什么呢?

你在命令行执行一下


   echo "print(package.cpath)" > tmp.lua && lua tmp.lua

看看得到什么结果。

目测vim 环境下返回的cpath有问题导致你遇到的这个错误。

另外,lua 的 package.path 和 package.cpath 都是可以被环境变量重载的,参考:

http://yi.github.io/work/2014/06/28/修正LUA_PATH导致luac编译失败的问题/

http://www.lua.org/manual/5.2/manual.html#pdf-package.cpath

crypto. 自动补全的时候报错 “lua.vim 0.7.24: Failed to get package.cpath from external Lua interpreter: Vim(let):E684: list index out of range: 0”
去掉了设置LUA_PATH以后也一样报错

echo “print(package.cpath)” > tmp.lua && lua tmp.lua
显示/usr/local/lib/lua/5.2/?.so;/usr/local/lib/lua/5.2/loadall.so;./?.so 我的mac下的lua装的是5.2

请问楼主知道是什么原因嘛?

你遇到的这个问题是卡在这里: https://github.com/vim-scripts/lua.vim/blob/b0f59440c355bf3ffc0a3c22eb1757fac19aeb5d/autoload/xolox/lua.vim#L50

你把这行上面的 command 打出来,然后自己在 vim 下用 ! 执行一下,看一下输出就可以找打问题原因了

那个 重新整理vim的环境 貌似链接有错…

图片怎么看不到了 坑爹