4

完成 CommandT 插件的所有安装步骤后,我command-t.vim could not load the C extension在启动它时收到错误消息。ComamndT 故障排除部分给出了以下建议:

If a problem occurs the first thing you should do is inspect the output of:

  ruby extconf.rb
  make

During the installation, and:

  vim --version

And compare the compilation and linker flags that were passed to the
extension and to Vim itself when they were built. If the Ruby-related
flags or architecture flags are different then it is likely that something
has changed in your Ruby environment and the extension may not work until
you eliminate the discrepancy.

对我来说确实似乎存在差异。

输出make表明 cygwin 的 gcc 正在使用 ruby​​ 1.8:

gcc -I. -I/usr/lib/ruby/1.8/i386-cygwin -I/usr/lib/ruby/1.8/i386-cygwin -I. -DHA
VE_RUBY_H    -g -O2    -std=c99 -Wall -Wextra -Wno-unused-parameter -c ext.c
gcc -I. -I/usr/lib/ruby/1.8/i386-cygwin -I/usr/lib/ruby/1.8/i386-cygwin -I. -DHA
VE_RUBY_H    -g -O2    -std=c99 -Wall -Wextra -Wno-unused-parameter -c match.c
gcc -I. -I/usr/lib/ruby/1.8/i386-cygwin -I/usr/lib/ruby/1.8/i386-cygwin -I. -DHA
VE_RUBY_H    -g -O2    -std=c99 -Wall -Wextra -Wno-unused-parameter -c matcher.c

gcc -shared -s -o ext.so ext.o match.o matcher.o -L. -L/usr/lib -L.  -Wl,--enabl
e-auto-image-base,--enable-auto-import,--export-all   -lruby  -ldl -lcrypt

vim 的:version输出包含以下输出:

-DDYNAMIC_RUBY_VER=191 -DDYNAMIC_RUBY_DLL=\"msvcrt-ruby191.dll\"

故障排除指南建议使用 Vim 7.2、Ruby 1.8.7-p299 和 DevKit 3.4.5r3-20091110 的组合。然而,这对我来说不是一个好的解决方案,原因有很多:

  1. 我正在使用 Vim 7.3 并希望继续这样做。
  2. Ruby 1.9.3 已安装在我的系统上,我在 PATH 中需要它用于其他项目。

那么有什么办法可以让它工作,同时保持最新版本的 ruby​​ 和最新版本的 vim?

更新

按照 AndrewMarshall 的建议,我根据本教程安装了 Ruby191 和 DevKit-4.5.0-20100819-1536-sfx.exe并运行ruby extconf.rb了该版本。makecmd 成功执行,输出如下:

gcc -I. -IC:/Ruby191/include/ruby-1.9.1/i386-mingw32 -I/C/Ruby191/include/ruby-1
.9.1/ruby/backward -I/C/Ruby191/include/ruby-1.9.1 -I. -DHAVE_RUBY_H    -O2 -g -
Wall -Wno-parentheses   -std=c99 -Wall -Wextra -Wno-unused-parameter -o ext.o -c
 ext.c
gcc -I. -IC:/Ruby191/include/ruby-1.9.1/i386-mingw32 -I/C/Ruby191/include/ruby-1
.9.1/ruby/backward -I/C/Ruby191/include/ruby-1.9.1 -I. -DHAVE_RUBY_H    -O2 -g -
Wall -Wno-parentheses   -std=c99 -Wall -Wextra -Wno-unused-parameter -o match.o
-c match.c
gcc -I. -IC:/Ruby191/include/ruby-1.9.1/i386-mingw32 -I/C/Ruby191/include/ruby-1
.9.1/ruby/backward -I/C/Ruby191/include/ruby-1.9.1 -I. -DHAVE_RUBY_H    -O2 -g -
Wall -Wno-parentheses   -std=c99 -Wall -Wextra -Wno-unused-parameter -o matcher.
o -c matcher.c
gcc -shared -s -o ext.so ext.o match.o matcher.o -L. -LC:/Ruby191/lib -L.  -Wl,-
-enable-auto-image-base,--enable-auto-import   -lmsvcrt-ruby191  -lshell32 -lws2
_32

并且:CommandT在 vim 中运行现在可以工作了,但是一旦我开始输入以搜索文件,然后按 Enter 键选择并打开它,我就会得到以下信息: Vim 崩溃

4

2 回答 2

4

不是一个真正的答案,但您可能想尝试ctrlp

  • 写入vimscript(无依赖,无编译)
  • 尽可能快CommandT(对我来说是主观的)
  • 可能具有比CommandT(是否CommandT最新文件?)更多的功能

还有我没试过的好旧的FuzzyFinder 。似乎它已经有大约 2 年没有更新了,但它可能仍在工作。

于 2012-08-16T21:35:36.927 回答
1

我成功地command-t在 Windows 10 上的 vim 8.0 上安装了最新版本。我在处理它时发现了这个问题,所以我要发布我的解决方案,虽然有点晚了。

vim 8.0 的 Ruby 版本是 Ruby 2.2。所以下载并安装Ruby 2.2and Ruby Devkit(记得执行ruby dk.rb initand ruby dk.rb installfor devkit)。

然后我按照 command-t 指令执行ruby extconf.conf,但它失败了——You have to install development tools first.即使我安装了它,它也会输出:

我用谷歌搜索了这个问题,发现RubyInstaller wiki说我应该通过 add 执行这​​个命令-rdevkit,我做到了。它在我执行时成功,ruby -rdevkit extconf.rb但在make. 所以我再次谷歌搜索并找到另一种编译方法:

rake make -rdevkit

它奏效了。这是我的截图:

在此处输入图像描述

于 2017-10-24T10:18:02.707 回答