簡體   English   中英

Vim 將哪個 Ruby 用於:ruby 命令?

[英]Which Ruby does Vim use for :ruby commands?

Vim 支持 Ruby 命令。 (有關更多信息,請參閱:help if-ruby文檔。)如果啟用了+ruby支持,則可以使用:ruby運行這些命令(請參閱vim --version )。 例如,我可以看到我目前正在使用 v3.0.0,方法是:

:ruby print RUBY_VERSION

但是,Ruby安裝的是哪個? 例如,是系統 Ruby,由 RVM 管理的東西,還是內置在 Vim 中的單獨 Ruby 安裝?

此外,是否可以安裝 Ruby gem 以與:ruby命令一起使用?


關於我的安裝的詳細信息:

$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.15.7
BuildVersion:   19H524
$ vim --version
VIM - Vi IMproved 8.2 (2019 Dec 12, compiled Mar 21 2021 06:59:54)
macOS version - x86_64
Included patches: 1-2625
Compiled by Homebrew
[...]
$ vim --version | grep ruby
+cursorshape       +lua               +ruby              +wildmenu
Linking: clang -L. -fstack-protector-strong -L/usr/local/lib -L/usr/local/opt/libyaml/lib -L/usr/local/opt/openssl@1.1/lib -L/usr/local/opt/readline/lib -L/usr/local/lib -o vim -lncurses -liconv -lintl -framework AppKit -L/usr/local/opt/lua/lib -llua5.4 -mmacosx-version-min=10.15 -fstack-protector-strong -L/usr/local/lib -L/usr/local/Cellar/perl/5.32.1_1/lib/perl5/5.32.1/darwin-thread-multi-2level/CORE -lperl -lm -lutil -lc -L/usr/local/opt/python@3.9/Frameworks/Python.framework/Versions/3.9/lib/python3.9/config-3.9-darwin -lpython3.9 -framework CoreFoundation -lruby.3.0 -L/usr/local/Cellar/ruby/3.0.0_1/lib
$ which -a ruby
/Users/username/.rbenv/shims/ruby
/usr/bin/ruby
$ rbenv versions
  system
* 2.6.5 (set by /Users/username/.rbenv/version)

這一切都取決於 Vim 構建配置。 :ver output 可能表示以下內容:

  • -lang的“lang”接口根本沒有編譯;
  • +lang所有內容都靜態鏈接到 Vim 可執行文件中;
  • +lang/dyn接口鏈接到動態庫 (dll/so)

如果它是動態鏈接的,那么將根據選項值(例如:h 'rubydll' )搜索和加載庫。 在這種情況下,它可能指向您想要的任何安裝。 (盡管在編譯時指定的-DRUBY_VERSION=XX可能仍然相關,並且 Vim 可能無法加載不匹配的庫)。

您沒有提及您的平台,或者您如何安裝 Vim。 如果我們談論默認行為,這些事情很重要。

Unless you statically compiled Ruby into Vim, it will be whichever Ruby is first in your PATH, or first in fish_user_paths if you use the fish shell. 在 macOS 和典型桌面 Linux 發行版(如 Ubuntu)上,這就是您應該期望的開箱即用。

其他檢查方法包括:

  1. 使用which -a ruby將向您顯示PATH中的所有紅寶石。

    如果 Ruby 3.0.0 不是列出的第一個項目,或者不是安裝到 /usr/bin/ruby 的版本,那么您可以很確定其他東西正在管理它。

  2. 檢查env | fgrep -i ruby env | fgrep -i ruby用於來自各種 Ruby 管理器的設置。

    版本管理器通常通過修改您的環境來工作。 例如,chruby 將CHRUBY_VERSION添加到環境中,並將RUBY_ROOT設置為選定的 Ruby 的路徑。 其他常見的版本管理器也會以各種方式更新環境,所以這里是個不錯的看點。

  3. 檢查您的 shell 初始化文件(例如~/.bashrc )。

    如果您沒有在 shell 的初始化腳本中設置 RVM、rbenv 或 chruby,那么您可能沒有使用其中之一。 當然,這並不排除使用符號鏈接、GNU stow 或其他重定向,但如果您沒有設置它們並且不在其他人可能擁有的多用戶系統上工作,那么您可以非常自信調用ruby正在調用 Ruby ,這是您PATH中的第一個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM