Chciałbym być w stanie skopiować i wkleić tekst w wierszu poleceń w bash przy użyciu tych samych wiązań klawiaturowych że Emacs używa domyślnie (czyli używając C-space
do set-mark
, M-w
aby skopiować tekst C-y
, M-y
aby go wkleić, etc.).
Dokumentacja GNU Bash mówi, że Bash zawiera niektóre z tych domyślnych powiązań klawiszy.
Na przykład yanking ( C-y
) działa domyślnie na moim terminalu. Nie mogę jednak sprawić, by polecenia set-mark
i copy
działały, i domyślnie nie wydają się być powiązane z żadnymi klawiszami.
Zwykle sposobem, w jaki użytkownik może zdefiniować własne powiązania klawiszy, jest ich dodanie .inputrc
. Dlatego szukałem i znalazłem następujące funkcje bash w dokumentacji przypuszczam może mi pomóc określić Emacs-like zachowanie, które chcę (tj set-mark
z C-space
i copy
z M-w
).
copy-region-as-kill ()
Skopiuj tekst z regionu do bufora zabijania, aby można go było natychmiast zaciągnąć. Domyślnie to polecenie jest niezwiązane.
i
set-mark (C-@)
Ustaw znak na punkcie. Jeśli podany zostanie argument numeryczny, znak zostanie ustawiony na tę pozycję.
Jeśli dobrze rozumiem, powyższe oznacza, że copy-region-as-kill
domyślnie nie jest związany z żadną sekwencją klawiatury, a domyślnie set-mark
jest związany C-@
.
Próbowałem C-@
na swoim terminalu, ale nie sądzę, aby działał, set-mark
ponieważ nie widzę podświetlonego tekstu, gdy poruszam kursorem. W każdym razie próbowałem dodać powiązania klawiatury ( M-w
i C-
) do funkcji copy-region-as-kill
i set-mark
powyżej w moim, .inputrc
a następnie ponownie je załadować C-x C-r
, ale to nie zadziałało. Wiem, że moje inne wpisy w.inputrc
działają, ponieważ mam zdefiniowane w nim inne skróty klawiaturowe zdefiniowane przez użytkownika.
Czy coś robię źle? Czy coś mi brakuje?
źródło
bash
i jakiego programu terminalowego używasz?Odpowiedzi:
Nie wyróżnia zaznaczenia, ale poza tym myślę, że działa dobrze.
Spróbuj uruchomić
aby upewnić się, że
C-x C-r
faktycznie działało.Powinien powiedzieć:
Następnie powinno działać dobrze.
Przykład:
daje mi
Jeśli kiedykolwiek chcesz wiedzieć, gdzie
mark
jest, po prostu zróbC-x
C-x
.Przykład:
umieści kursor z powrotem w miejscu, w którym ustawiłeś znak (początek linii).
Ponadto nie sądzę, że musisz dodać
set-mark
powiązanie. Ja nie.(zwróć uwagę, że większość terminali wysyła
C-@
poC-Spc
naciśnięciu. Zakładam, że twój też.)Jeśli to wszystko się nie powiedzie:
emacs -nw
tym samym terminalu?źródło
\e
lub\M-
. Zobacz składnię pliku inicjującego readline .Wiążę również Cw dla zabicia regionu . Oto mój .inputrc:
źródło