Ubuntu下使用snap时如何将nvim添加到update-alternatives中

ash*_*gpu 5 linux ubuntu neovim

我想将 nvim (快速)添加到update-alternatives. 问题是,在确定要运行哪个程序时,snap 似乎以神秘的方式工作:

$ sudo update-alternatives --install /usr/bin/vim vim /snap/bin/nvim 60

$ vim # works

$ vim hello.txt
error: unknown command "hello.txt", see 'snap help'.
Run Code Online (Sandbox Code Playgroud)

如果我看一下/snap/bin/nvim它是一个链接/usr/bin/snap

$ ls -lah /snap/bin/nvim
lrwxrwxrwx 1 root root 13 Jan 25 15:02 /snap/bin/nvim -> /usr/bin/snap
Run Code Online (Sandbox Code Playgroud)

但是snap可执行文件如何确定它需要运行nvim

Emi*_* M. 12

您需要按照 @Felipe Francisco 的回答中的说明设置别名:

sudo snap alias nvim vim
Run Code Online (Sandbox Code Playgroud)

来源: https: //snapcraft.io/docs/commands-and-aliases


作为替代方案,您可以创建一个启动 nvim 的脚本,如下所示:

#!/usr/bin/env bash
/usr/bin/snap run nvim ${@}
Run Code Online (Sandbox Code Playgroud)

假设您将其命名为 nvim_start.sh。现在您可以在 update-alternatives 命令中使用此脚本(请记住启用执行标志):

CUSTOM_NVIM_PATH=/usr/bin/nvim_start.sh
sudo chmod +x "${CUSTOM_NVIM_PATH}"
set -u
sudo update-alternatives --install /usr/bin/ex ex "${CUSTOM_NVIM_PATH}" 110
sudo update-alternatives --install /usr/bin/vi vi "${CUSTOM_NVIM_PATH}" 110
sudo update-alternatives --install /usr/bin/view view "${CUSTOM_NVIM_PATH}" 110
sudo update-alternatives --install /usr/bin/vim vim "${CUSTOM_NVIM_PATH}" 110
sudo update-alternatives --install /usr/bin/vimdiff vimdiff "${CUSTOM_NVIM_PATH}" 110
sudo update-alternatives --set ex "${CUSTOM_NVIM_PATH}"
sudo update-alternatives --set vi "${CUSTOM_NVIM_PATH}"
sudo update-alternatives --set view "${CUSTOM_NVIM_PATH}"
sudo update-alternatives --set vim "${CUSTOM_NVIM_PATH}"
sudo update-alternatives --set vimdiff "${CUSTOM_NVIM_PATH}"
Run Code Online (Sandbox Code Playgroud)