The source content for blog.juliobiason.me
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

45 lines
1.4 KiB

+++
title = "Using `alternatives`"
date = 2021-06-21
[taxonomies]
tags = ["linux", "cli", "vim", "alternatives"]
+++
`alternatives` allows one to select a different executable for a normal command
line program, but how does it work?
<!-- more -->
I'll give an example: I enjoy using NeoVim instead of Vim for different
reasons. But there is a nag that I keep hitting: NeoVim executable is called
`nvim` instead of the `vim` for... Vim.
I could change two different environment variables, `VISUAL` and `EDITOR` to
`nvim`, so any application that wants to open an external editor would call
NeoVim instead. But, unfortunately, my muscle memory doesn't work with
environment variables, so either I keep correcting myself to type `nvim`
instead of `vim` or I find a way to, when I call `vim`, it should actually call
`nvim`.
The initial solution is to use aliases, so `alias vim nvim` (in Fish) would
make `vim` actually run `nvim`... except when I use `sudo`, which doesn't
expand the alias before its call. The actual solution would be something
global, that takes care of this.
And that's what `alternatives` do.
In my case, what I actually need to do is run the follow command:
```
sudo alternatives --install /usr/bin/nvim vim /usr/bin/vim 1
```
What does it do:
* Say I want to use `/usr/bin/nvim`
* ... which I'll call "vim" (which is the name `alternatives` uses in its
configuration)
* ... making a symlink into `/usr/bin/vim`
* ... with priority 1.