Julio Biason
3 years ago
2 changed files with 46 additions and 2 deletions
@ -0,0 +1,44 @@
|
||||
+++ |
||||
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. |
Loading…
Reference in new issue