Korrektur von .zshrc zu ~/.zshrc

Korrektur von .zshrc zu ~/.zshrc

Gibt es eine Möglichkeit, eine Art Alias ​​festzulegen, sodass in folgenden Fällen Folgendes geschieht:

cd some/directory
vim .zshrc

Es tut vim ~/.zshrc?

Antwort1

Die Antwort ist viel einfacher als Sie denken, denn Sie stellen die falsche Frage.

Wenn Sie eigentlich meinen: „Wie kann ich einen Alias ​​erstellen, der es mir ermöglicht, ~/.zshrcunabhängig von meinem aktuellen Arbeitsverzeichnis zu bearbeiten?“, dann lautet die Antwort einfach:

alias zshconfig="vim ~/.zshrc" 

Dieses Beispiel stammt von mir ~/.zshrcund ich verwende es oft.

Eine noch bessere Option, vorgeschlagen von@mateen-ulhaqin den Kommentaren unten, wäre:

alias zshrc="vim ~/.zshrc" 

Mit anderen Worten: Versuchen Sie nicht, den Dateinamen oder den Pfad zum Dateinamen zu aliasen. Beides ist möglich, kann aber unvorhersehbare Nebenwirkungen haben, die Ihnen später Probleme bereiten, da@Michael-Homerhat darauf hingewiesen.

Da Sie aber wissen, dass Ihr bevorzugtes $EDITORist vim, benennen Sie einfach den vimAufruf dieser bestimmten Datei mit einem Alias, und schon sind Sie fertig. (Es ist viel sicherer, einer bestimmten Kombination von Befehlen und Argumenten einen Alias ​​für eine ungewöhnliche Zeichenfolge zuzuweisen, die außerhalb des Kontexts weniger wahrscheinlich verwendet wird.)

Generell rate ich Ihnen jedoch, sich keine Gedanken über die Optimierung der Zwei-Zeichen-Sequenz zu machen ~/, sondern sich stattdessen an das Eintippen zu gewöhnen. Machen Sie weiter ... strecken Sie Ihren linken kleinen Finger aus, als wären Sie Eddie Van Halen und üben Tonleitern. (Das wird Ihnen vimdabei helfen, die Tasten zu meistern, da Sie sich wahrscheinlich daran gewöhnen sollten, die Taste mit dem kleinen Finger zu drücken Esc!)

Mit zunehmender Tippfähigkeit entwickeln Sie ein Muskelgedächtnis für die ~/Zeichenfolge, was Ihnen dabei hilft, diese Zeichenfolge zuverlässig einzugeben, wenn Sie auf Dateien in Ihrem Home-Verzeichnis verweisen. Sie tippen sie absichtlich schnell und nicht versehentlich ein.

Der Nachteil bei der Verwendung von Aliasnamen besteht darin, dass diese Sie zwar auf Ihrem Heimcomputer sehr beschleunigen, Sie jedoch verlangsamen, wenn Sie sshauf einen Remote-Docker-Container im privaten Subnetz eines Clients zugreifen müssen und feststellen, dass alle Ihre Aliase verschwunden sind.

Antwort2

Ich verstehe den Sinn nicht wirklich, aber ja. Was Sie tun, ist komplizierter, als einem Befehl einfach einen anderen Namen oder einige Standardargumente zu geben. Sie benötigen also eine Funktion, keinen Alias.

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

Erklärung: Wenn Sie ausführen vim, wird die Funktion aufgerufen. In der letzten Zeile command vim …wird der externe Befehl aufgerufen und "$@"ihm werden die Argumente übergeben, die an die Funktion übergeben wurden. Wenn dazwischen genau ein Argument vorhanden ist und dieses Argument die genaue Zeichenfolge ist .zshrcund im aktuellen Verzeichnis keine aufgerufene Datei vorhanden ist .zshrc, wird die Befehlszeile durch ersetzt ~/.zshrc. Passen Sie diese Bedingungen an, wenn sie nicht genau Ihren Wünschen entsprechen.

Antwort3

Vermutlich verwenden Sie zsh als Shell, wasverfügen über eine „globale Alias“-FunktionDamit können Sie Folgendes tun:

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

Das ist,überalldass das Wort .zshrcin der Befehlszeile erscheint, wird es durch ersetzt ~/.zshrc, das dann wie üblich der Tilde-Erweiterung unterliegt. Es muss ein eigenes Shell-„Wort“ sein, daher wird es nicht erweitert, wenn es nur eine Teilzeichenfolge eines längeren Namens ist. Dies funktioniert mit jedem Befehl.

Globale Aliase sind notorisch problematisch, da sie sich wirklich überall und unbemerkt erweitern. Sie könnten sie also beispielsweise rm .zshrcin einem anderen Verzeichnis ausführen und sie würden Ihre eigenen Dotfiles ins Visier nehmen. Sie gelten auch innerhalb von Shell-Funktionen, sogar in bereits definierten. In diesem Fall ist es relativ unwahrscheinlich, dass es zu Problemen kommt, aber seien Sie sich des Potenzials bewusst. Sie können eine Datei im aktuellen Verzeichnis gezielt mit benennen ./.zshrcoder die wörtliche Zeichenfolge mit \.zshrcoder abrufen, indem Sie sie in Anführungszeichen setzen.

verwandte Informationen