como alterar o caminho do comando vim

como alterar o caminho do comando vim

Tenho duas versões viminstaladas 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 ~/.vimrcarquivo?

Responder1

Use um apelido.

O alias é definido em um dos seus arquivos BASH RC, como ~/.bashrc. Abaixo, se /usr/local/bin/vimfor 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'
  • -htesta se um arquivo é um link simbólico, o que pode ser o caso ao usar o Homebrew.
  • -xtesta se um arquivo é um arquivo executável normal.

(Pode-se determinar que um arquivo é um link quando ls -lmostra 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 ~/.bashrcou 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 viminvoca /usr/local/bin/vim.


Modifique o caminho.

Outra maneira que funcionaria para todos os softwares instalados via Homebrew é modificar o arquivo PATHpara que todos os softwares instalados pelo Homebrew sejam os primeiros no arquivo PATH. Para começar, é preciso saber qual zsharquivo 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 é ~/.zshrcou ~/.zprofile, altere o valor da pathvariável. Por exemplo, o pathseguinte define /usr/local/bine /usr/local/sbinprimeiro, 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 PATHseria 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 PATHsão "ligadas" por typseset, portanto basta sourceo arquivo que foi editado para modificar a pathvariável: source ~/.zprofile, por exemplo. Então dê uma olhada na PATHvariá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/binfosse 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/binseria gidpara evitar problemas com o BSD idno /usr/bin.

Responder2

O padrão com o brew é colocar /usr/local/binos PATHdiretórios do sistema antes, /usr/binpara que os comandos sejam selecionados primeiro.

informação relacionada