Czy wykryć automatycznie, kiedy wpisałem „vi”, ale miałem na myśli „cd”?
21
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?
Bardzo mnie to frustrowało, dopóki nie odkryłem, że możesz użyć Enter i strzałek, aby przejść do pliku w folderze. Gdy klikniesz Enter, będąc na nim, otworzy się.
Z niewielką ilością żartów: zmień na zsh. Skonfiguruj go tak, aby po wpisaniu nazwy katalogu zmienił się w ten katalog. Użyj aliasów sufiksowych, aby po wpisaniu * .sh, * .c, * .config otworzyło się odpowiedni plik w vi. Zastrzeżeniem tutaj jest oczywiście to, że możesz pominąć „vi” lub „cd” w nieznanej powłoce.
@Alex Wydaje mi się, że jest to idealne rozwiązanie w rzadkich przypadkach, gdy niepoprawnie wpisałeś „vi” zamiast „cd”, a jednocześnie uczę cię, jak zawsze wpisywać teraz „vi”;) [tzn. Mam nadzieję, że nie często muszę użyć innego serwera / maszyny, na której ta funkcja nie będzie dostępna, aby zaoszczędzić stres ...] [+1 dla tej odpowiedzi, ale to też chciałem odpowiedzieć, z wyjątkiem testowania tylko dla „$ { 1} „[a następnie cd„ $ {1} ”] zamiast„ $ {! #} ”...]
@OlivierDulac zgodził się - podobnie niebezpieczny jest aliasing rmdo rm -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.
Oprócz odpowiedzi na @ChrisDown, istnieje inne podejście: pomijanie katalogów
Dzięki takiemu podejściu możesz:
vi ./*
i uruchomi vi na wszystkich plikach w bieżącym katalogu, nawet jeśli zawiera on podkatalogi, pomijając te podkatalogi
vi(){for arg do[-d "$arg"]||set--"$@""$arg"
shift
done["$#"-gt 0]&& command vi "$@"}
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.
Uwaga:: command somethinguruchamia polecenie „coś” (tj. pierwsze wystąpienie „czegoś” znalezionego za pomocą $ PATH) zamiast dowolnego aliasu LUB funkcji o nazwie „coś”. \somethingpomijał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).
@ChrisDown: mówimy o pomocy użytkownikowi, który mam nadzieję nie spróbuje się włamać ^^. I ta ewaluacja polega na ustawieniu nowego zestawu argumentów (zestaw - ...), więc samo w sobie jest mniej niebezpieczne
@StephaneChazelas: dzięki za edycję! Próbowałem to napisać w ten sposób, ale martwiłem się, że zapętlę się w nieskończoność. „For arg” jest sprawdzane przed rozpoczęciem wewnętrznego leczenia, dlatego też jego lista „$ @” jest „zapisywana” i powtarzana, i nie zmienia się, mimo że wewnętrzne leczenie zmienia „$ @”?]
Jednym z rozwiązań jest cdcałkowite zaprzestanie używania . Umieść shopt -s autocdw swoim .bashrclub setopt autocdw swoim .zshrc. Następnie, aby przejść do innego katalogu, wpisz nazwę katalogu bez żadnego polecenia.
Nie zapomnij wpisać, vijeś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ę:
vi (){if[ $# -eq 1 ] && [ -d "$1" ]; then
cd --"$1"else
command vi "$@"fi}
Ta odpowiedź wydaje się nieco trollish. To nie odpowiedzieć na pierwotne pytanie, jak PO nie określił one kiedykolwiek potrzebne vi w pliku. Odpowiedź, choć nieco zabawna, z pewnością nie jest przydatna.
@ChrisDown Twierdzę, że lepiej wiedzieć, czego się spodziewać. Jeśli spodziewasz się używać funkcji vima, użyj vim. Jeśli nie jest dostępny, skorzystaj viz bardziej ograniczonego zestawu funkcji.
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.