Pytanie jest proste, nie ma na to żadnych skarg. Chciałbym tylko skomentować, że często dużo warte jest ułatwienie „standardowych” powiązań klawiszy, które już istnieją w wielu aplikacjach, zamiast dostosowywania bez żadnego prawdziwego zysku i pewności, że nigdy nie zobaczymy zachowania na obcych systemach. Ctrl+wdo czego powinieneś się przyzwyczaić, imho.
Daniel Andersson,
@ Daniel Andersson: lub alternatywnie - Możesz opracować sposób przeniesienia swoich ustawień na maszynę zagraniczną.
Adobe
Udostępnianie plików kropkowych to rozwiązany problem, ale niewiele pomaga na mniej lub bardziej lokalnych komputerach, na których masz dość otwarte uprawnienia. Jeśli jesteś w obcym systemie, najprawdopodobniej nie masz możliwości rekonfiguracji takich rzeczy (przynajmniej nie bez wiedzy współpracowników, którzy również korzystają z tej samej maszyny :-)). Ponadto każda nowa aplikacja będzie wymagać specjalnego traktowania.
Daniel Andersson,
6
Mam odwrotny problem, jestem przyzwyczajony do Ctrl-w„usuwania poprzedniego słowa” w konsoli i robienia tego instynktownie nawet w Eclipse lub Chrome, gdzie oznacza to zamknięcie karty / zamknięcie bieżącego pliku. Dość irytujące.
Ezequiel Muns,
1
Mam ten sam problem z Chrome SShInATab. Jak zrobić Ctrl-W bez Ctrl-W? :)
Riccardo SCE
Odpowiedzi:
11
Dlaczego nie użyć po prostu Alt+ Backspacelub Ctrl+, Wktóre są już zmapowane w większości terminali. Nie jestem pewien co do konsoli. Xmodmap (man xmodmap) może również służyć do mapowania innych niestandardowych kluczy. (Paradoksalnie xmodmap nie może bardzo dobrze odwzorować Backspace, ponieważ terminal zastępuje mapowania, ale działa dobrze z większością kluczy ...).
Ponieważ zwykłem Ctrl-Backspace w moim Emacsie. Wiedziałem o Ctrl-w. Alt-Backspace jest dla mnie nowy (+1).
Adobe
1
Dobra uwaga, @hellork. Możesz przechwycić control + backspace na serwerze X (poprzez xmodmap) i zamapować go na jakiś nieużywany znak (np. Alt-backspace).
4
Irytujące jest to, że ctrl + backspace jest bardzo powszechnym mapowaniem dla „usuwania słów wstecz” w większości aplikacji GUI na większości głównych systemów operacyjnych. Podobnie, Ctrl + W jest szeroko rozpowszechniony dla „zamykania okna”. Alt + w jest rzadko używany do czegokolwiek w GUI, o czym mogę myśleć. Standaryzacja byłaby świetna. Zastanawiam się, jakie byłyby większe zakłócenia, zmiana terminali lub zmiana GUI?
naught101
1
@naught, Control-W jest już domyślnym klawiszem wymazywania słów na terminalach unixowych. Tak, koliduje z konwencją Windows / GUI, ale tak naprawdę była pierwsza - od wielu lat. Obwiniaj Microsoft!
Alexis
11
Znalazłem ten wątek przez Google, ale odpowiedź nie była tym, co chciałem usłyszeć. Więc bawiłem się:
Na moim terminalu normalne backspace wysyła ^H, a ctrl + backspace wysyła ^?. Tak więc powinno być proste ponowne powiązanie, ^?aby usunąć słowo, które domyślnie jest dostępne za pomocą Ctrl + W.
Pierwsza (nieudana próba):
$ bind -P | grep 'C-w'
unix-word-rubout can be found on "\C-w".
Dlatego powinno to działać:
$ bind '"\C-?":unix-word-rubout'
Jednak to nie ... ktoś jest w stanie wyjaśnić?
Druga (udana) próba:
$ bind '"\C-?":"^W"'
Gdzie ^Wjest dosłowny / surowy ^W(naciśnij ctrl + V, a następnie ctrl + W, aby się pojawił).
Tutaj jest kilka dobrych odpowiedzi, ale rozwiązałem go w Konsoli, wybierając Ustawienia-> Edytuj bieżący profil-> Klawiatura-> Edytuj, a następnie dodając mapowanie od Backspace+Controldo \x17. (Znalazłem kod ASCII dla Ctrl-w przy użyciu showkey --ascii.)
Dzięki za zwrócenie uwagi na to showkey. Tak więc doszedłem do wniosku, że w ALT+Dprzypadku usunięcia słowa przed kursorem będzie to odpowiadać \x1b\x64.
loki
Dziękuję, rozwiązało to mój problem. W moim przypadku muszę ponownie przypisać Alt + Backspace, a jego kolejność to \x1b\x7f.
DDMC
3
To zależy od tego, co widzi bash. Podczas regularnej interakcji terminalu bash nie widzi naciśniętych klawiszy modyfikujących, tylko wynikowy znak. Na przykład Backspace jest już taki sam jak control-H. Przytrzymanie klawisza Shift lub Control nie ma znaczenia.
JEDNAK, twoja aplikacja terminalowa (xterm? Cmd? Terminal? Putty? Zależy od twojego systemu operacyjnego) może zobaczyć twoje naciśnięcia klawiszy i może mieć sposób na mapowanie kombinacji klawiszy Control-Backspace na coś, co bash może odróżnić od Backspace.
Odkryłem, że mój bash nie widzi backspace. Ale może uda się to zrobić.
Adobe
@adobe, co masz na myśli? Wpisz „stty” na swoim terminalu, a następnie przeczytaj o tym instrukcję. Jeśli ^ H ma być postacią usuwaną, możesz ustawić ją na coś innego ... jeśli masz dobry powód.
1
Dobry przykład tego można znaleźć na stronie github.com/calj/gtconf/blob/master/zsh/zshrc . Konsole pozwala to zrobić. Skopiuj jeden z plików * .keytab z / usr / share / kde4 / apps / konsole / do ~ / .kde / share / apps / konsole i zmodyfikuj go za pomocą sugestii w powyższym linku, usuwając wiersz „key Backspace” i dodawanie: key Backspace-Shift-Control : "\x7f"i key Backspace-Shift+Control : "\E[9;3~"Zmieniaj także wiersz tytułu, gdy na nim jesteś: keyboard "Xfree4 Modlist"na przykład. Następnie możesz dodać "\e[9;3~": backward-kill-word"do ~ / .inputrc
Adam
2
Spróbuj tego:
bind '"\C-_":backward-kill-word'
Opcjonalnie dodaj następujące elementy do ~ / .inputrc, aby było trwałe:
Jest mało prawdopodobne, aby Control-backspace był taki sam jak podkreślenie Control.
Thomas Dickey,
1
Ze wszystkich rzeczy, których próbowałem w tym wątku, zadziałało! Korzystanie z „GNU bash, wersja 4.3.48 (1) -release (x86_64-pc-linux-gnu)” na bashu na Windows / WSL
Markus Jevring
Działa to świetnie w cygwin, przy użyciu GNU bash, version 4.4.12(3)-release (x86_64-unknown-cygwin).
zagyi
1
W Konsole:
Kliknij Settings -> Edit current profile
kliknij kartę „Klawiatura” -> [Edit...]
kliknij [Add]przycisk i pod Key Combinationtypem kolumny Backspace+Ctrl. W Outputtypie kolumny0x08 (która jest tradycyjnie znakiem cofania)
Teraz powinieneś być w stanie zmapować ten klucz backward-kill-wordza pośrednictwem
Dzięki. Działa dla mnie, przynajmniej w xfce4-terminal.
limon
0
Na większości terminali CTRL + W powinien już usunąć słowo wstecz. Działa to z Xterm i myślę, że działa z konsolą. CTRL + W to standardowe powiązanie klawiszy w programie tekstowym, który będzie działał z vimem w trybie wstawiania, emacsem i każdą powłoką.
Ctrl-w jest powiązany z „zamykaniem tabulatorów” w Emacsie, FireFoxie, Krusaderze - więc ustawiłem to jako kombinację zamykania tabulatorów również w Konsole.
Ctrl+w
do czego powinieneś się przyzwyczaić, imho.Ctrl-w
„usuwania poprzedniego słowa” w konsoli i robienia tego instynktownie nawet w Eclipse lub Chrome, gdzie oznacza to zamknięcie karty / zamknięcie bieżącego pliku. Dość irytujące.Odpowiedzi:
Dlaczego nie użyć po prostu Alt+ Backspacelub Ctrl+, Wktóre są już zmapowane w większości terminali. Nie jestem pewien co do konsoli. Xmodmap (man xmodmap) może również służyć do mapowania innych niestandardowych kluczy. (Paradoksalnie xmodmap nie może bardzo dobrze odwzorować Backspace, ponieważ terminal zastępuje mapowania, ale działa dobrze z większością kluczy ...).
źródło
Znalazłem ten wątek przez Google, ale odpowiedź nie była tym, co chciałem usłyszeć. Więc bawiłem się:
Na moim terminalu normalne backspace wysyła
^H
, a ctrl + backspace wysyła^?
. Tak więc powinno być proste ponowne powiązanie,^?
aby usunąć słowo, które domyślnie jest dostępne za pomocą Ctrl + W.Pierwsza (nieudana próba):
Dlatego powinno to działać:
Jednak to nie ... ktoś jest w stanie wyjaśnić?
Druga (udana) próba:
Gdzie
^W
jest dosłowny / surowy^W
(naciśnij ctrl + V, a następnie ctrl + W, aby się pojawił).źródło
Po prostu edytuj swój
~/.inputrc
(być może trzeba go utworzyć lub skopiować/etc/inputrc
tam), aby zawierał:Spowoduje to również mapowanie Ctrl+, Deleteaby usunąć słowo obok kursora.
źródło
Tutaj jest kilka dobrych odpowiedzi, ale rozwiązałem go w Konsoli, wybierając Ustawienia-> Edytuj bieżący profil-> Klawiatura-> Edytuj, a następnie dodając mapowanie od
Backspace+Control
do\x17
. (Znalazłem kod ASCII dla Ctrl-w przy użyciushowkey --ascii
.)źródło
showkey
. Tak więc doszedłem do wniosku, że wALT+D
przypadku usunięcia słowa przed kursorem będzie to odpowiadać\x1b\x64
.\x1b\x7f
.To zależy od tego, co widzi bash. Podczas regularnej interakcji terminalu bash nie widzi naciśniętych klawiszy modyfikujących, tylko wynikowy znak. Na przykład Backspace jest już taki sam jak control-H. Przytrzymanie klawisza Shift lub Control nie ma znaczenia.
JEDNAK, twoja aplikacja terminalowa (xterm? Cmd? Terminal? Putty? Zależy od twojego systemu operacyjnego) może zobaczyć twoje naciśnięcia klawiszy i może mieć sposób na mapowanie kombinacji klawiszy Control-Backspace na coś, co bash może odróżnić od Backspace.
źródło
key Backspace-Shift-Control : "\x7f"
ikey Backspace-Shift+Control : "\E[9;3~"
Zmieniaj także wiersz tytułu, gdy na nim jesteś:keyboard "Xfree4 Modlist"
na przykład. Następnie możesz dodać"\e[9;3~": backward-kill-word"
do ~ / .inputrcSpróbuj tego:
Opcjonalnie dodaj następujące elementy do ~ / .inputrc, aby było trwałe:
Działa na bash 4.3.11 w Kubuntu 14.04
źródło
GNU bash, version 4.4.12(3)-release (x86_64-unknown-cygwin)
.W Konsole:
Settings -> Edit current profile
[Edit...]
[Add]
przycisk i podKey Combination
typem kolumnyBackspace+Ctrl
. WOutput
typie kolumny0x08
(która jest tradycyjnie znakiem cofania)Teraz powinieneś być w stanie zmapować ten klucz
backward-kill-word
za pośrednictwemźródło
Na większości terminali CTRL + W powinien już usunąć słowo wstecz. Działa to z Xterm i myślę, że działa z konsolą. CTRL + W to standardowe powiązanie klawiszy w programie tekstowym, który będzie działał z vimem w trybie wstawiania, emacsem i każdą powłoką.
źródło