Corrigindo .zshrc para ~/.zshrc

Corrigindo .zshrc para ~/.zshrc

Existe uma maneira de definir algum tipo de alias para que quando eu fizer isso:

cd some/directory
vim .zshrc

Isso acontece vim ~/.zshrc?

Responder1

A resposta é muito mais simples do que você pensa, porque você está fazendo a pergunta errada.

Se o que você realmente quer dizer é "como posso criar um alias que me permita editar meu ~/.zshrcdiretório de trabalho atual?" então a resposta é simplesmente:

alias zshconfig="vim ~/.zshrc" 

Este exemplo é meu ~/.zshrce eu o uso com frequência.

Uma opção ainda melhor, sugerida por@mateen-ulhaqnos comentários abaixo, seria:

alias zshrc="vim ~/.zshrc" 

Em outras palavras, não tente criar um alias para o nome do arquivo ou o caminho para o nome do arquivo. Ambas as coisas são possíveis, mas podem criar efeitos secundários imprevisíveis que lhe causarão problemas mais tarde, como@michael-homerapontou.

Mas como você sabe que o seu preferido $EDITORé vim, simplesmente apelide a viminvocação desse arquivo específico e você estará no negócio. (É muito mais seguro alias de uma combinação específica de comandos e argumentos a uma string incomum que tem menos probabilidade de ser usada fora do contexto.)

De maneira mais geral, porém, meu conselho é que você não se preocupe em otimizar a sequência de dois caracteres ~/, mas, em vez disso, acostume-se a digitá-la. Vá em frente... estique o dedo mínimo esquerdo como se fosse Eddie Van Halen praticando escalas. (Isso o ajudará a dominar vimenquanto estiver fazendo isso, já que você provavelmente deveria se acostumar a bater a Esctecla com o dedo mínimo!)

À medida que suas habilidades de digitação melhoram, você ganhará memória muscular para a ~/sequência, o que o ajudará a digitar essa sequência de caracteres com segurança ao se referir a arquivos em seu diretório inicial. Você digitará rapidamente de propósito e não por acidente.

A desvantagem de confiar em aliases é que não importa o quanto eles possam acelerar você em seu computador doméstico, eles o deixarão lento quando você precisar sshentrar em algum contêiner Docker remoto na sub-rede privada de um cliente e descobrir que todos os seus aliases desapareceram.

Responder2

Eu realmente não vejo sentido, mas sim. O que você está fazendo é mais complicado do que apenas dar um nome diferente a um comando ou alguns argumentos padrão, então você precisa de uma função, não de um alias.

function vim {
  if [[ $# -eq 1 && $1 == .zshrc && ! -e .zshrc ]]; then
    set -- ~/.zshrc
  fi
  command vim "$@"
}

Explicação: quando você executa vim, ele invocará a função. Na última linha, command vim …invoca o comando externo e "$@"passa para ele os argumentos que foram passados ​​para a função. Nesse meio tempo, se houver exatamente um argumento e esse argumento for a string exata .zshrce não houver nenhum arquivo chamado .zshrcno diretório atual, a linha de comando será substituída por ~/.zshrc. Ajuste essas condições se elas não forem exatamente o que você deseja.

Responder3

Presumivelmente você está usando zsh como seu shell, o que faztem um recurso de "alias global"que permite que você faça isso:

% alias -g .zshrc='~/.zshrc'
% echo .zshrc
/home/mwh/.zshrc

Aquilo é,em qualquer lugarSe a palavra .zshrcaparecer na linha de comando, ela será substituída por ~/.zshrc, que estará sujeita à expansão do til como de costume. Tem que ser uma "palavra" de shell própria, portanto não será expandida se for apenas uma substring de um nome mais longo. Isso funciona com qualquer comando.

Os aliases globais são extremamente problemáticos porque eles realmente se expandem para qualquer lugar, silenciosamente, e então você pode, por exemplo, executar rm .zshrcem outro diretório e mirar em seus próprios dotfiles. Eles também se aplicam dentro de funções do shell, mesmo aquelas já definidas. Neste caso, parece relativamente improvável que cause um problema, mas esteja ciente do potencial para isso. Você pode nomear especificamente um arquivo no diretório atual com ./.zshrcou obter a string literal com \.zshrcou colocando-o entre aspas.

informação relacionada