Ungefähr fünfmal am Tag gebe ich "vi" ein, wenn ich "cd" meinte, und ende damit, ein Verzeichnis in vi zu öffnen. Es macht mich NUTS. Anscheinend sollte es eine Möglichkeit geben, zu erkennen, wann ich "vi + directory" eingebe und es automatisch in "cd + directory" ändere. Gedanken?
bash
shell
alias
cd-command
Alex
quelle
quelle
Antworten:
Mit der Annahme, dass Sie
vi
mit dem Verzeichnis als letztem Argument aufrufen :quelle
rm
fürrm -i
, was in vielen Distributionen der Standard ist. Ich denke im Allgemeinen, dass der beste Weg, Probleme zu lösen, darin besteht, den Benutzer zu lösen, anstatt sie zu umgehen.rm
,rm -i
um Ihnen möglicherweise einige Probleme in der Vergangenheit erspart zu haben, aber möglicherweise (und wahrscheinlich) Sie in Zukunft in viel mehr Schwierigkeiten zu bringen ...vi
in der Frage gesagt ...${!#}
verweist indirekt auf das letzte Argument undcommand
ist nur erforderlich, um eine Funktionsrekursion in dieser Instanz zu vermeiden.Abgesehen von der @ ChrisDown-Antwort gibt es hier einen anderen Ansatz: Verzeichnisse umgehen
Mit diesem Ansatz können Sie:
und es startet vi für alle Dateien im aktuellen Verzeichnis, auch wenn es Unterverzeichnisse enthält, wobei diese Unterverzeichnisse umgangen werden
Dies ist nur do vi, für alle Argumente, die keine Verzeichnisse sind ... Daher wird es Ihnen nicht beibringen, "vi" für "cd" zu verwenden;)
Und es ruft nicht vi auf, wenn Sie es einfach getan haben: vi somedirectory (dh, Sie haben vi anstelle von cd falsch geschrieben). Aber es wird dort dann nicht automatisch cd, so dass Sie sich immer noch daran erinnern, dass Sie cd ^^ eingeben müssen
Ich habe eine "kompatible" Methode verwendet, um die Argumentlisten so zu ändern, dass sie auf viele Plattformen übertragbar sind.
quelle
command something
startet den Befehl "something" (dh das erste Vorkommen von "something", das mit $ PATH gefunden wurde) anstelle eines Alias ODER einer Funktion mit dem Namen "something".\something
würde nur den Alias umgehen, würde aber trotzdem die Funktion sein, wenn sie existiert (und hier würde das bedeuten, dass sich die Funktion "vi" selbst aufruft und eine Schleife ausführt).Eine Lösung besteht darin, die Verwendung
cd
ganz einzustellen. Setzen Sieshopt -s autocd
in Ihr.bashrc
odersetopt autocd
in Ihr.zshrc
. Wenn Sie dann in ein anderes Verzeichnis wechseln möchten, geben Sie den Verzeichnisnamen ohne Befehl ein.Vergessen Sie nicht, einzugeben,
vi
wenn Sie eine Datei bearbeiten möchten.Wenn Sie wirklich möchten, dass ein einzelner Befehl entweder in ein Verzeichnis wechselt oder eine Datei bearbeitet, können Sie daraus eine Funktion machen:
quelle
Verwenden Sie die Alias-Funktion in Unix. Sobald Sie einen Alias von cd zu vi haben, ist das Problem behoben.
quelle
vi
ohne manuelles Überschreiben des Alias verwenden kann, was höchst unerwünscht erscheint.vim
stattdessen das richtige zu verwenden.vim
. Wenn es nicht verfügbar ist, nutzenvi
und erwarten Sie die eingeschränkteren Funktionen.