如何在“oh my zsh”中运行“nvm”?

Posted

技术标签:

【中文标题】如何在“oh my zsh”中运行“nvm”?【英文标题】:How to run "nvm" in "oh my zsh"? 【发布时间】:2018-04-11 02:37:45 【问题描述】:

系统中有一个nodejs,通过nvm安装。该命令未运行npm。 控制台是Oh my zsh

【问题讨论】:

使用 oh-my-zsh 插件zsh-nvm 【参考方案1】:

您可以使用zsh-nvm 或通过在您的 ~/.zshrc 中添加以下行来自行启用它

 export NVM_DIR=~/.nvm
 [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"

额外:

为了更快的 shell 初始化,我使用lazynvm,它只在需要时加载节点

lazynvm() 
  unset -f nvm node npm
  export NVM_DIR=~/.nvm
  [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"  # This loads nvm


nvm() 
  lazynvm 
  nvm $@


node() 
  lazynvm
  node $@


npm() 
  lazynvm
  npm $@

参考:Lazy load nvm for faster shell start

【讨论】:

如果有人使用 Vim 进行开发,延迟加载会导致使用 tsserver 的自动完成失败,因为 tsserver 不会在 PATH 中找到。最好只使用急切加载恕我直言。 如果我将它添加到 ~/.zshrc,运行 nvm 时会出现“找不到命令”?这个怎么用? 确保您的 .zshrc 已加载:您可以键入“lazy”并按 Tab 键查看 ZSH 自动补全是否显示您lazynvm。如果没有,请检查您的 shell 配置或 ZSH 配置以确保它正在加载 .zshrc【参考方案2】:

从 Bash 切换到 Oh-My-Zsh

如果您已经安装了nvm,并且您正在从bash 切换到oh-my-zsh,您只需打开您的.zshrc 文件并添加nvm 包含在oh-my-zsh 中的插件:

    使用以下命令在 nano 中打开您的 zsh 配置文件.zshrcnano ~/.zshrc 向下滚动到显示plugins=(git) 的位置并在括号内添加nvm 使其显示为plugins=(git nvm)(用空格分隔插件) 按control + O(在macOS上),然后按enter保存,然后按control + X退出 然后打开一个新的终端窗口/选项卡并输入nvm ls 以确认它有效。请注意,您必须为您的 shell 打开一个新窗口/选项卡才能使用新更新的 .zshrc 配置(或输入 source ~/.zshrc 等)

来源:https://github.com/robbyrussell/oh-my-zsh/tree/master/plugins/nvm

【讨论】:

感谢您的详细回答。我认为改善这个答案的唯一方法是:添加标题(从 Bash 移动到 zsh)并添加一些换行符 感谢@duichwer 的建议。我刚刚进行了这些编辑。 这是正确正确的答案,请忽略其他的lol。 你是救世主【参考方案3】:

这在 Ubuntu 20.04 上对我有用。

安装或更新 nvm

wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash

添加你的 ~/.zshrc

echo 'export NVM_DIR=~/.nvm' >> ~/.zshrc
echo '[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"' >> ~/.zshrc

在当前shell环境中加载

source ~/.zshrc

检查 nvm 版本

nvm -v

【讨论】:

为我工作!!谢谢【参考方案4】:

一个更简单的解决方案是使用默认提供的nvm plugin:

它还会自动获取 nvm,因此您无需手动执行 在你的 .zshrc 中

    git clone https://github.com/nvm-sh/nvm.git ~/.nvm cd ~/.nvm && git checkout v0.35.1(当前最新release) 将nvm 添加到您的~/.zshrc。例如:plugins=(... nvm)

【讨论】:

这对我很有帮助。谢谢。【参考方案5】:

使用自制软件安装nvm

    brew install nvm

    编辑您的系统配置

    vim ~/.zshrc     # or  vim ~/.bashrc
    export NVM_DIR=~/.nvm

esc > :wq 保存文件

    重新加载配置source $(brew --prefix nvm)/nvm.sh

    查看 nvm 版本

$ nvm --version
# 0.36.0

好好享受吧。

【讨论】:

source $(brew --prefix nvm)/nvm.sh 对我来说是缺失的部分。谢谢! 谢谢,这解决了我的问题。很高兴我在重新安装之前尝试过这个。【参考方案6】:

我发现 oh-my-zsh 附带了一个 nvm 插件(这与 lukechilds 插件不同)。经过短暂的检查,我认为它在加载时对.zshrc 添加了必要的修改,因此只需将nvm 添加到.zshrc 的插件列表中也应该可以正常工作(对我来说也是如此)。

我没有通过谷歌找到有关该默认 nvm 插件的更多详细信息,所以我不知道这是否是“首选”解决方案。

【讨论】:

在撰写本文时,将nvm 添加为插件对我来说在 Mac 上不起作用(不过,操作系统不应该是一个因素)。我仍然得到zsh: command not found: nvm。我会尝试手动添加。 我遇到了同样的问题。请问adding manually是什么意思?【参考方案7】:

将此代码添加到用户目录上的 .zshrc

export NVM_DIR="$HOME/.nvm"
  [ -s "/usr/local/opt/nvm/nvm.sh" ] && . "/usr/local/opt/nvm/nvm.sh"  # This loads nvm
  [ -s "/usr/local/opt/nvm/etc/bash_completion.d/nvm" ] && . "/usr/local/opt/nvm/etc/bash_completion.d/nvm" # This loads nvm bash_completion

然后在你的终端上运行这段代码:

source ~/.zshrc

【讨论】:

【参考方案8】:

我强烈建议使用 christophemarois' approach to lazy loading nvm (node, npm and global packages) 以避免缓慢的 shell 启动时间:

# Add every binary that requires nvm, npm or node to run to an array of node globals
NODE_GLOBALS=(`find ~/.nvm/versions/node -maxdepth 3 -type l -wholename '*/bin/*' | xargs -n1 basename | sort | uniq`)
NODE_GLOBALS+=("node")
NODE_GLOBALS+=("nvm")

# Lazy-loading nvm + npm on node globals call
load_nvm () 
  export NVM_DIR=~/.nvm
  [ -s "$(brew --prefix nvm)/nvm.sh" ] && . "$(brew --prefix nvm)/nvm.sh"


# Making node global trigger the lazy loading
for cmd in "$NODE_GLOBALS[@]"; do
  eval "$cmd() unset -f $NODE_GLOBALS; load_nvm; $cmd \$@ "
done

【讨论】:

【参考方案9】:

使用 Linux (Ubuntu 20.04)

使用您喜欢的编辑器,您可以编辑 ~/.zshrc

nano or vi ~/.zshrc

在文件末尾添加:

# NVM
export NVM_DIR=~/.nvm
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"

然后你运行:

source ~/.zshrc

【讨论】:

以上是关于如何在“oh my zsh”中运行“nvm”?的主要内容,如果未能解决你的问题,请参考以下文章

oh my zsh设置启动随机颜色

Ubuntu下安装配置zsh和oh my zsh

Mac 使用 iTerm2 + Oh My Zsh 配置个性化终端

Arch Linux 终端升级zsh(oh my zsh)

mac配置彩色shell(oh my zsh)

mac上使用oh my zsh都有哪些必备的插件推荐