Pobieranie <ctrl> + <backspace> w celu usunięcia słów w trybie gnome-terminal i vim

11

Wygląda na to, że ctrl+ Wusuwa wstecz jedno słowo na raz. To świetnie, ale naprawdę bardzo podoba mi się, że działa z ctrl+, backspacepodobnie jak w większości innych aplikacji.

Jak najlepiej to zrobić? Potrzebuję zmiany, aby wpłynąć na polecenia gnome-terminal, vim wiersza poleceń i vim GUI.

Costa
źródło
1
W vimie możesz nacisnąć D, B, a zrobi to samo. Jednak również tęsknię za tą funkcją w terminalu, ponieważ musisz uciec i nie działa ona podczas pracy w trybie wstawiania. Niesamowita wskazówka dla CTRL + W.
mchid

Odpowiedzi:

8

Zauważ, że zadziała to w terminalu i domyślnym trybie emacsa (którego używasz, jeśli Ctrl+ Wusuniesz za ciebie poprzednie słowo). Nie będzie działać w trybie vi basha i nie wpłynie na sam vi / vim. Jest to zatem tylko częściowa odpowiedź, ale najlepsza, jaką może zaoferować ten użytkownik emacsa.


Tego rodzaju rzeczą zarządza readlinebiblioteka, której zachowanie można kontrolować za pośrednictwem ~/.inputrc. Edytuj (lub utwórz, jeśli nie istnieje) ~/.inputrci dodaj ten wiersz:

"\C-H":"\C-W"

Teraz otwórz nowy terminal i powinien działać.

Wyjaśnienie

To \C-Hjest właściwie Control+ BackSpace. Możesz zobaczyć kody klawiszy, naciskając Ctrl+, Va następnie klawisz, którego szukasz. Zobaczysz, że BackSpacepowraca ^H.

Teraz powinno być możliwe powiązanie Control+ BackSpacez funkcją bash, która usuwa poprzednie słowo ( backward-kill-wordlub unix-word-rubout) za pomocą "\C-H": backward-kill-word. Nie mogę tego jednak uruchomić. Działa doskonale z różnymi klawiszami ( "\C-E": backward-kill-wordna przykład powoduje Ctrl+ Eusunięcie poprzedniego słowa), ale z jakiegoś powodu nie mogę go uruchomić BackSpace.

Tak więc, aby obejść ten problem, po prostu mapujemy Ctrl+ Backspacena Ctrl+, Wktóry jest już zmapowany backward-kill-word. Tak więc, gdy naciśniesz Ctrl+ Backspace, zostanie to przetłumaczone na Ctrl+, Wktóre z kolei wyśle backward-kill-word. Pomysł na to obejście mam z tego postu SU .

terdon
źródło
4

Do niedawna terminal gnome emitował ten sam kod na + Backspacei , dlatego nie można rozróżnić tych dwóch w aplikacji.CtrlBackspace

Zostało to naprawione w wersji vte-0.42, która jest częścią Gnome 3.18 wydanego tej jesieni.

Jeśli używasz Wily, możesz znaleźć zaktualizowane pakiety w Gnome3 Staging .

egmont
źródło
czy mogę sprawić, by działało w trybie zaufanym bez dodawania tego ogromnego PPA?
Ciprian Tomoiagă
Nie bez pobierania, łatania, kompilowania i instalowania pakietu libvte 2.90, który pasuje do zaufanego. Łatka znajduje się pod adresem bugzilla.gnome.org/show_bug.cgi?id=733246 .
egmont
3

Zamiast tego użyj Alt+ Backspace: działa tak jak Ctrl+ Backspacei nie wymaga żadnej konfiguracji.

Marco Lackovic
źródło
1

Działa na moim komputerze. Tylko upewnij się, że używasz tmux z master i nvim z linuxbrew, a control + backspace działa również w bash i vim!

(Uzyskaj także bash z linuxbrew)

Fábio Santos
źródło