如何在“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 配置文件
.zshrc
:nano ~/.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”?的主要内容,如果未能解决你的问题,请参考以下文章