Właśnie pisałem coś w stylu:
mv foo/bar/poit/zoid/narf.txt
i nagle zdałem sobie sprawę, cholera, muszę ponownie wpisać duże części tego parametru
mv foo/bar/poit/zoid/narf.txt foo/bar/poit/zoid/troz.txt
Nawet przy wypełnianiu tabulatorów jest to dość bolesne. Wiem, że mogę skopiować i wkleić parametr, wybierając tekst i klikając środkowym przyciskiem myszy, ale to nie wystarczy. Chcę pozostać na klawiaturze.
Czy jest więc sposób, aby skopiować wklej bieżący parametr linii za pomocą klawiatury?
bash
readline
line-editor
k0pernikus
źródło
źródło
mv foo/bar/poit/zoid/{narf.txt,troz.txt}
zamiast dwukrotnego wpisywania / kopiowania długiego adresu.mv foo/bar/poit/zoid/{narf,troz}.txt
. Działa to szczególnie dobrze, jeśli mamy coś takiego.../zoid/this_source_file_has_to_be_patched.c{,.orig}
Odpowiedzi:
Jeśli planowałem z wyprzedzeniem, używam rozszerzenia nawiasów klamrowych . W tym przypadku:
Oto inne podejście przy użyciu domyślnych
readline
skrótów klawiaturowych:mv foo/bar/poit/soid/narf.txt
: początekunix-word-rubout
do usunięciafoo/bar/poit/soid/narf.txt
yank
, przestrzeń,yank
znowu dostaćmv foo/bar/poit/soid/narf.txt foo/bar/poit/soid/narf.txt
backward-kill-word
dwukrotnie, aby usunąć ostatninarf.txt
troz.txt
: wpisz inną część ogonaJeśli spędzasz trochę czasu na używaniu
bash
powłoki, zalecam okresowe czytanie listy domyślnych skrótów i wybieranie kilku, które wydają się przydatne do nauczenia się i włączenia do twojej rutyny. Rozdział 8bash
instrukcji jest dobrym miejscem do rozpoczęcia. Znajomość skrótów może naprawdę podnieść efektywność.źródło
.txt
, możesz nacisnąć Ctrl + Lewo (lub dowolny inny skrót, który wywołujebackward-word
), następnie Lewo jeden znak, a następnie Alt + Backspace i wpisaćtroz
.Ekspansja historii faktycznie działa również na bieżącym poleceniu, używając oznaczenia zdarzenia
!#
. Połącz to z desygnatorem słowa dla ostatniego argumentu -$
-, aby uzyskać właśnie wpisany parametr. Możesz używać wszystkich zwykłych modyfikatorów, więc jeśli np. Zmieniasz nazwę pliku w odległym katalogu, możesz po prostu wpisać:źródło
magic-space
opcją bash w inputrc do automatycznego rozszerzania rozszerzeń historii. (Nie mogłem użyć najczęściej głosowanej odpowiedzi, ponieważ ustawiłem ^ W na łamanie ukośników, ponieważ jest to zwykle bardziej przydatne.)alt+backspace
zwykle już zatrzymuje się na ogranicznikach słów, takich jak ukośniki, więc nie musisz zmieniać sposobu^W
uzyskania tej funkcji, możesz mieć zarówno słowa bez znaków, jak i białe znakiJak w twoim przykładzie, możesz użyć następnej konstrukcji:
lub nawet (jak sugeruje Ansgar Esztermann ):
zamiast tego dwukrotnie wpisuj / kopiuj długi adres.
źródło
Bawiąc się, mam to do pracy:
Naciśnij, Enter
aby zapisać ostatni parametr.
Teraz użyj, ↑aby wrócić do ostatniego wpisanego wiersza. Wpisz spację i aby uzyskać ostatnio używany parametr użyj:
Alt + .
Nienawidzę prowokować błędów, ale w tym przypadku użycia zadanie zostaje wykonane.
źródło
Możesz łatwo używać zmiennych:
Albo w ciebie przypadek (konkurencja tab note działa za pomocą części):
źródło
Mam to w moim
~/.inputrc
:!#
jest bieżącą linią,:$
jest ostatnim słowem i\e^
jesthistory-expand-line
.źródło
Dla
zsh
mnie pomocne są następujące skróty klawiszowe.Więc uderzyłem Alt- Maby powtórzyć ostatni argument Alt- Kjeśli chcę usunąć części z końca ścieżki.
Oto przydatne odniesienie do niektórych zachowań, które można zmapować.
źródło
Krótkie interaktywne dwuetapowe rozwiązanie
rodzaj:
echo foo/bar/poit/zoid/narf.txt
To sprawia, że
foo/bar/poit/zoid/narf.txt
dostępne dla Alt- .skrót w bash.wpisać:
mv
a hitem Alt- ., Space, Alt-.Dostaniesz
mv foo/bar/poit/zoid/troz.txt foo/bar/poit/zoid/troz.txt
. Teraz możesz łatwo zmodyfikować ostatnie słowo.Dowódca północy
To narzędzie, które może być (bardzo) przydatne, to menedżer plików uruchomiony w konsoli. Daje to możliwość interaktywnego kopiowania nazw plików i ścieżek katalogów do wiersza poleceń. Midnight Commander pokazuje zatem 2 panele (lewy i prawy), które wyświetlają zawartość różnych katalogów.
Krótki przewodnik:
Jest to zdecydowanie najszybszy sposób, jaki do tej pory znalazłem - po tym, jak przyzwyczaiłem się do skrótów.
źródło
Użyj tego samego w {,} „powielaczu”. To znaczy:
źródło