Około 5 razy dziennie wpisuję „vi”, gdy miałem na myśli „cd”, i ostatecznie otwieram katalog w vi. To sprawia, że NUTS. Wydaje się, że powinien istnieć sposób na wykrycie, kiedy piszę w katalogu „vi +” i automatyczną zmianę na „katalog cd +”. Myśli?
bash
shell
alias
cd-command
Alex
źródło
źródło
Odpowiedzi:
Przy założeniu, że wywołujesz
vi
katalog jako ostatni argument:źródło
rm
dorm -i
, który jest domyślny w wielu dystrybucjach. Generalnie uważam, że najlepszym sposobem rozwiązania problemów jest rozwiązanie użytkownika, a nie obejście go.rm
dorm -i
mógł zaoszczędzić ci kłopotów w przeszłości, ale może (i prawdopodobnie będzie)vi
w pytaniu ...${!#}
pośrednio odwołuje się do ostatniego argumentu icommand
jest konieczny tylko w celu uniknięcia rekurencji funkcji w tym przypadku.Oprócz odpowiedzi na @ChrisDown, istnieje inne podejście: pomijanie katalogów
Dzięki takiemu podejściu możesz:
i uruchomi vi na wszystkich plikach w bieżącym katalogu, nawet jeśli zawiera on podkatalogi, pomijając te podkatalogi
Ten po prostu robi vi, dla każdego argumentu, który nie jest katalogiem ... Dlatego nie nauczy cię używania „vi” dla „cd”;)
I nie wywoła vi, jeśli właśnie to zrobiłeś: vi somedirectory (tj. Błędnie wpisałem vi zamiast cd). Ale nie będzie tam cd automatycznie, więc wciąż pamiętasz, że musisz wpisać cd ^^
Użyłem „zgodnego” sposobu zmiany list argumentów, aby był przenośny na wiele platform.
źródło
command something
uruchamia polecenie „coś” (tj. pierwsze wystąpienie „czegoś” znalezionego za pomocą $ PATH) zamiast dowolnego aliasu LUB funkcji o nazwie „coś”.\something
pomijałby tylko alias, ale nadal działałby, gdyby istniał (a tutaj oznaczałoby to, że funkcja „vi” wywołałaby się i zapętliła).Jednym z rozwiązań jest
cd
całkowite zaprzestanie używania . Umieśćshopt -s autocd
w swoim.bashrc
lubsetopt autocd
w swoim.zshrc
. Następnie, aby przejść do innego katalogu, wpisz nazwę katalogu bez żadnego polecenia.Nie zapomnij wpisać,
vi
jeśli chcesz edytować plik.Jeśli naprawdę chcesz, aby jedno polecenie zmieniło się na katalog lub dokonało edycji pliku, możesz ustawić funkcję:
źródło
Użyj funkcji aliasu w Uniksie. Po utworzeniu aliasu cd na vi problem zostanie rozwiązany.
źródło
vi
bez ręcznego zastąpienia aliasu, co wydaje się wysoce niepożądane.vim
zamiast tego.vim
. Jeśli nie jest dostępny, skorzystajvi
z bardziej ograniczonego zestawu funkcji.