Dlaczego ctrl + strzałka w lewo nie pomija słów?


20

Jestem na moim Ubuntu 12.04. Za każdym razem, gdy edytuję tekst, używam ctrl+ left/ rightdo poruszania się / przeskakiwania między słowami. Ostatnio zainstalowałem xscreensaver i zmieniłem skróty klawiaturowe, aby aktywować mój wygaszacz ekranu. Ale wtedy Ctrl+ leftprzestał normalnie reagować (przejdź do następnego słowa po lewej). Ctrl+ rightnadal przeskakuje do następnego słowa po prawej stronie. Problem występuje bez względu na to, czy korzystam z terminala, Gedit, czy nawet piszę tekst na stronach internetowych.

Wróciłem do gnome-wygaszacza ekranu, usunąłem xscreensaver (naprawiłem także skróty klawiaturowe). Ale problem pozostaje.

Próbowałem skopiować zawartość z /etc/inputrcdo ~/.inputrc(domyślnie nie mam ~ / .inputrc). Mam tutaj kilka informacji: dziwne postacie pojawiają się, gdy nawiguję za pomocą klawiszy Ctrl i strzałek

Proszę pomóż.

EDYCJA: Oto moja ~/.inputrc:

# /etc/inputrc - global inputrc for libreadline
# See readline(3readline) and `info rluserman' for more information.
# Be 8 bit clean.
set input-meta on
set output-meta on
# To allow the use of 8bit-characters like the german umlauts, uncomment
# the line below. However this makes the meta key not work as a meta key,
# which is annoying to those which don't need to type in 8-bit characters.

# set convert-meta off

# try to enable the application keypad when it is called.  Some systems
# need this to enable the arrow keys.
# set enable-keypad on

# see /usr/share/doc/bash/inputrc.arrows for other codes of arrow keys

# do not bell on tab-completion
# set bell-style none
# set bell-style visible

# some defaults / modifications for the emacs mode
$if mode=emacs

# allow the use of the Home/End keys
"\e[1~": beginning-of-line
"\e[4~": end-of-line

# allow the use of the Delete/Insert keys
"\e[3~": delete-char
"\e[2~": quoted-insert

# mappings for "page up" and "page down" to step to the beginning/end
# of the history
# "\e[5~": beginning-of-history
# "\e[6~": end-of-history

# alternate mappings for "page up" and "page down" to search the history
# "\e[5~": history-search-backward
# "\e[6~": history-search-forward

# mappings for Ctrl-left-arrow and Ctrl-right-arrow for word moving
"\e[1;5C": forward-word
"\e[1;5D": backward-word
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word

$if term=rxvt
"\e[8~": end-of-line
"\eOc": forward-word
"\eOd": backward-word
$endif

# for non RH/Debian xterm, can't hurt for RH/Debian xterm
# "\eOH": beginning-of-line
# "\eOF": end-of-line

# for freebsd console
# "\e[H": beginning-of-line
# "\e[F": end-of-line

$endif

jeśli usunę / etc / inputrc, oto co otrzymam, jeśli przytrzymam CTRL, a następnie naciśnij pięciokrotnie strzałkę w prawo: naciskając ctrl + strzałka w prawo

W przeciwieństwie do pierwszego obrazu powyżej, przytrzymanie CTRL i naciśnięcie lewej strzałki więcej niż raz nie spowoduje ;5Dponownego wydrukowania ... to tak, jakby raz zaakceptował polecenie i nie robi tego więcej ... zobacz poniższy obrazek: naciskając ctrl + strzałka w lewo



Jakiej powłoki używasz?
Sergiy Kolodyazhnyy

Odpowiedzi:


25

1 w ~/.zshrc

bindkey '^[[1;5D' backward-word
bindkey '^[[1;5C' forward-word

2 - lub w ~/.bashrc

bind '"\e[1;5D" backward-word' 
bind '"\e[1;5C" forward-word'

... A teraz ctrl+ left/ rightprzeskocz słowa w byobu / tmux.

3 - Nie zadzieraj z inputrc.


to jest za dawno ... już zainstalowane Ubuntu
itagomo

3
Podobnie, jeśli masz powłokę Bash, w swoim pliku ~ / .bashrc dodaj bind „” e e [1; 5D „backward-word” bind ”” \ e [1; 5C „forward-word”
ismael

3

Miałem ten sam problem. Naprawiłem to, kopiując następujące wiersze do mojego ~/.inputrcpliku:

"\e[1;5C": forward-word
"\e[1;5D": backward-word
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word

wymagane są tylko pierwsze 2 wiersze
davidchoo12

1

Utwórz plik inputrc za pomocą touch ~/.inputrc.
Skopiuj treść zaakceptowanej odpowiedzi do odsyłacza, do którego się odwoływałeś, tzn. Dziwne znaki pojawiające się, gdy używam klawiszy Ctrl i Strzałek do nawigacji , do tego pliku, otwierając plik ~ / .inputrc za pomocą edytora tekstu. Zapisz to.
Odczytaj plik za pomocą bind ~/.inputrcpolecenia lub uruchom ponownie nowy terminal. Rzeczy powinny działać.


już zrobiłem mój ~ / .inputrc. taka sama treść, jak to, co ma mój / etc / inputrc. problem polega na tym, że polecenie „CTRL + strzałka w lewo” nie przeskakuje do następnego słowa po lewej stronie. ale poza tym wszystkie funkcje działają. jakieś inne rozwiązanie?
itagomo

Wygląda na to, że powiązanie ctrl + lewa strzałka zostało w jakiś sposób nadpisane. Czy możesz podać dokładną zawartość pliku inputrc? Drugą możliwością może być zniekształcenie linii. Nawiasem mówiąc, czy powiązanie kombinacji ctrl + lewa jest ostatnim wierszem ~/.inputrcpliku?
drake01

edytowany post .. patrz wyżej .. dodatkowe informacje, pomijanie słów w prawo działa przytrzymując (nie wolno zwalniać) klawisz CTRL, a następnie naciskając prawy klawisz raz za każdym razem, gdy chcę przeskakiwać słowa .. ale przechodząc w lewo, potrzebuję aby zwolnić klawisz CTRL za każdym razem, gdy pomijam słowa ..
itagomo

ktoś, kto może pomóc?
itagomo

1

Doszedłem do wniosku, że pomijanie słów w lewo przez uruchomienie Ctrl + Left nie działało (nawet nie, gdy dodałem jakiś kod do ~ / .inputrc lub ~ / .zshrc), ponieważ domyślnie ten skrót jest już używany w Ubuntu (zmienia rozmiar bieżące okno w poziomie). Możesz zmienić domyślny skrót w menu System -> Preferencje -> Skrót klawiaturowy. Właśnie zmieniłem Ctrl + Lewy na Ctrl + Dół, aby go uwolnić. Po tej zamianie pomijanie słów w lewo za pomocą Ctrl + Left działa dobrze! Nawet bez ~ / .inputrc lub ~ / .zshc.


szukałem rozwiązań dla tego od bardzo dawna. To był bardzo prosty i wydajny! Dzięki.
rizwanhudda
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.