Tenho duas versões vim
instaladas no macOS:
- uma versão padrão,
/usr/bin/vim
, - e MacVim (via Homebrew),
/usr/local/bin/vim
.
Quando digito vim
, o programa padrão é invocado. Quero usar o MacVim sempre que digitar vim
. Você sabe como? Ambos usam o mesmo ~/.vimrc
arquivo?
Responder1
Use um apelido.
O alias é definido em um dos seus arquivos BASH RC, como ~/.bashrc
. Abaixo, se /usr/local/bin/vim
for um link simbólico, crie um alias chamado vim
.
if [ -h '/usr/local/bin/vim' ]; then
alias vim='/usr/local/bin/vim'
fi
A mesma lógica pode ser aplicada da seguinte forma.
[ -h '/usr/local/bin/vim' ] && alias vim='/usr/local/bin/vim'
-h
testa se um arquivo é um link simbólico, o que pode ser o caso ao usar o Homebrew.-x
testa se um arquivo é um arquivo executável normal.
(Pode-se determinar que um arquivo é um link quando ls -l
mostra a primeira letra de suas permissões como a letra l, emeurwxr-xr-x.)
Também pode ser necessário definir algumas variáveis que os programas usam para invocar um editor padrão.
EDITOR='/usr/local/bin/vim'
VISUAL='/usr/local/bin/vim'
Depois de adicionar a definição ao arquivo RC do seu shell, forneça o arquivo RC para obter o novo alias source ~/.bashrc
ou qualquer arquivo apropriado para sua configuração BASH. O comando, command -v vim
, mostra que o alias foi criado quando sua saída é a seguinte.
alias vim=/usr/local/bin/vim
Os mesmos arquivos VIM RC são usados por ambas as versões do vim
.
A vantagem de apontar para o link simbólico em vez do executável binário é que o alias não precisa ser atualizado a cada atualização do MacVim, o que acontece com frequência. O Homebrew mantém o link simbólico apontado para o executável binário correto quando as atualizações são realizadas com brew update && brew upgrade
, por exemplo.
A versão do sistema, /usr/bin/vim
, deve permanecer onde está. Sem desabilitar a Proteção de Integridade do Sistema (SIP), ele não pode ser excluído ou alterado de qualquer maneira. Ainda é possível usar a versão do sistema digitando /usr/bin/vim
, mas digitando vim
invoca /usr/local/bin/vim
.
Modifique o caminho.
Outra maneira que funcionaria para todos os softwares instalados via Homebrew é modificar o arquivo PATH
para que todos os softwares instalados pelo Homebrew sejam os primeiros no arquivo PATH
. Para começar, é preciso saber qual zsh
arquivo RC já contém a definição do caminho.
cd
grep path .z*
Um dos resultados pode incluir fpath
. Esta não é a variável certa. Estamos procurando uma variável minúscula chamada path
. Após deduzir o nome do arquivo a ser editado, que provavelmente é ~/.zshrc
ou ~/.zprofile
, altere o valor da path
variável. Por exemplo, o path
seguinte define /usr/local/bin
e /usr/local/sbin
primeiro, seguido de scripts ou programas no diretório inicial e, por último, o restante do caminho que já foi definido pelo sistema.
path=(
/usr/local/{bin,sbin}
$HOME/bin
$path
)
A variável Unix resultante PATH
seria então definida como segue.
/usr/local/bin:/usr/local/sbin:/Users/$username/bin:/usr/bin:/bin:/usr/sbin:/sbin
As variáveis zsh
path
e Unix PATH
são "ligadas" por typseset
, portanto basta source
o arquivo que foi editado para modificar a path
variável: source ~/.zprofile
, por exemplo. Então dê uma olhada na PATH
variável para saber se ela foi modificada conforme o esperado: echo $PATH
.
Os mantenedores do pacote Homebrew são muito bons em reconhecer qual software causaria problemas no macOS se /usr/local/bin
fosse o primeiro no caminho, antes do /usr/bin
. Por exemplo, se o Homebrew for instalar o GNU id
, então o nome do software /usr/local/bin
seria gid
para evitar problemas com o BSD id
no /usr/bin
.
Responder2
O padrão com o brew é colocar /usr/local/bin
os PATH
diretórios do sistema antes, /usr/bin
para que os comandos sejam selecionados primeiro.