Skrót „usuń słowo” powłoki usuwa zbyt wiele znaków

9

Pod Bashem pewne zachowanie Alt+ ddoprowadza mnie do szaleństwa od lat i doszedłem do wniosku, że może to naprawić za pomocą ustawienia.

Jeśli jestem w terminalu i wydaję takie polecenie:

...$   cat >> ~/notesSuperLongFilename.txt

a następnie, jeśli chcę, powiedzmy, wydać:

...$ scp ~/notesSuperLongFilename.txt

Chciałbym odzyskać „cat >> ~ / notesSuperLongFilename.txt” za pomocą Ctrl + p (poprzednia linia), a następnie zrobić Ctrl+, aa następnie Alt+ di Alt+ dponownie, aby mieć:

...$  ~/notesSuperLongFilename.txt

i wtedy będę mógł po prostu wpisać „scp”, a następnie zrobić znak Ctrl+ m(lub nacisnąć Enter / Return).

Jednak to nie działa, ponieważ po pierwszym Alt+ dotrzymuję:

...$ >> ~/notesSuperLongFilename.txt

(na razie w porządku)

ale po drugim Alt+ ddostaję:

...$ .txt

Z jakiegoś powodu Alt+ dusuwa jednocześnie „>> ~ / notesSuperLongFilename” zamiast po prostu „>>” .

To musi być największa strata czasu, która doprowadza mnie do szaleństwa w Linuksie / Bash od dosłownie lat.

Jak więc naprawić to (prawdopodobnie zepsute) zachowanie Alt+ d?

PS: Nie wiem, kto jest „odpowiedzialny” za to Alt+ dzachowanie: nie wiem, czy to terminal, czy powłoka (w moim przypadku Bash).

Cedric Martin
źródło
po „cat >> ~ / notesSuperLongFilename.txt” wpisz „scp”, a następnie Esc. (Ucieknij raz, a potem raz postać „.”)
Mathieu,

Odpowiedzi:

3

Nie wiem, kto jest „odpowiedzialny” za to zachowanie Alt + d: Nie wiem, czy to terminal, czy powłoka (w moim przypadku Bash).

Jest to bashw szczególności domyślna konfiguracja edycji wiersza poleceń. Oto ładna strona na temat tego, jakie komendy można powiązać i jak zmienić domyślne powiązania.

Domyślnym powiązaniem Alt-djest to, kill-wordktóre powinno działać jak polecenie o tej samej nazwie w Emacsie. Jednak, jak zauważyłeś, tak nie jest - Emacs uznałby, że odstęp między >>tyldą w twoim przykładzie jest łamaniem wyrazów. Tak bashnie jest, rozważałbym błąd. Brakuje źródła bash, zmiany i ponownej kompilacji, nie wiem, co możesz zrobić.

dodgethesteamroller
źródło
1
To wydaje się być błędem. Zgłosiłbym to zespołowi Bash.
Ernie,